最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android使用AudioRecord判斷是否有音頻輸入

 更新時間:2017年01月13日 09:40:40   作者:andywuchuanlong  
這篇文章主要介紹了Android使用AudioRecord判斷是否有音頻輸入的實例代碼,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧

Android黨都應該玩過一個叫吹裙子的游戲,這個游戲就是原理就是通過監(jiān)聽用戶吹出的氣的力度來決定如何把MM的裙子弄飛起來的,所以關鍵在于如何判斷用戶吹氣的力度問題。現在公司剛好有這個需求要評估就是需要一直監(jiān)聽用戶的語音輸入,當在兩秒內沒有語音輸入時候就暫停某項事情,有語音輸入的時候就要繼續(xù)做某件事。其實這兩件事情的本質原理是一樣的,就是通過這AudioRecord來處理用戶輸入的原始音頻數據,從而計算出當前用戶輸入的音量大小來判斷用戶是否有語音輸入。下面貼上一段代碼用戶可以自行研究。

public static int calculateVolume(byte[] var0, int var1) {
    int[] var3 = null;
    int var4 = var0.length;
    int var2;
    if(var1 == 8) {
      var3 = new int[var4];
      for(var2 = 0; var2 < var4; ++var2) {
        var3[var2] = var0[var2];
      }
    } else if(var1 == 16) {
      var3 = new int[var4 / 2];
      for(var2 = 0; var2 < var4 / 2; ++var2) {
        byte var5 = var0[var2 * 2];
        byte var6 = var0[var2 * 2 + 1];
        int var13;
        if(var5 < 0) {
          var13 = var5 + 256;
        } else {
          var13 = var5;
        }
        short var7 = (short)(var13 + 0);
        if(var6 < 0) {
          var13 = var6 + 256;
        } else {
          var13 = var6;
        }
        var3[var2] = (short)(var7 + (var13 << 8));
      }
    }
    int[] var8 = var3;
    if(var3 != null && var3.length != 0) {
      float var10 = 0.0F;
      for(int var11 = 0; var11 < var8.length; ++var11) {
        var10 += (float)(var8[var11] * var8[var11]);
      }
      var10 /= (float)var8.length;
      float var12 = 0.0F;
      for(var4 = 0; var4 < var8.length; ++var4) {
        var12 += (float)var8[var4];
      }
      var12 /= (float)var8.length;
      var4 = (int)(Math.pow(2.0D, (double)(var1 - 1)) - 1.0D);
      double var14 = Math.sqrt((double)(var10 - var12 * var12));
      int var9;
      if((var9 = (int)(10.0D * Math.log10(var14 * 10.0D * Math.sqrt(2.0D) / (double)var4 + 1.0D))) < 0) {
        var9 = 0;
      }
      if(var9 > 10) {
        var9 = 10;
      }
      return var9;
    } else {
      return 0;
    }
}

上述方法的形參中的一個字節(jié)數組便是當前捕捉到用戶輸入的原始音頻數據,第二個形參則是音頻數據格式位PCM,16位每個樣本,比如如果音頻數據格式設為AudioFormat.ENCODING_PCM_16BIT,則參數傳16。最后實現的效果就是如下:

01-12 18:54:17.222 E/recordtest(24249): no voice input
…………….
01-12 18:54:19.027 E/recordtest(24249): no voice input
01-12 18:54:19.067 E/recordtest(24249): no voice input
01-12 18:54:19.105 E/recordtest(24249): no voice input
01-12 18:54:19.145 E/recordtest(24249): no voice input
01-12 18:54:19.188 E/recordtest(24249): no voice input
01-12 18:54:19.227 E/recordtest(24249): no voice input
01-12 18:54:19.228 E/recordtest(24249): no voice input in 2 sec
01-12 18:54:19.269 E/recordtest(24249): no voice input
01-12 18:54:19.306 E/recordtest(24249): no voice input
01-12 18:54:19.345 E/recordtest(24249): no voice input
01-12 18:54:19.387 E/recordtest(24249): no voice input
01-12 18:54:19.427 E/recordtest(24249): no voice input
01-12 18:54:19.466 E/recordtest(24249): has voice input
01-12 18:54:19.505 E/recordtest(24249): has voice input
01-12 18:54:19.546 E/recordtest(24249): has voice input
01-12 18:54:19.586 E/recordtest(24249): has voice input
01-12 18:54:19.646 E/recordtest(24249): has voice input
01-12 18:54:19.686 E/recordtest(24249): has voice input
01-12 18:54:19.726 E/recordtest(24249): has voice input
01-12 18:54:19.766 E/recordtest(24249): has voice input

以上所述是小編給大家介紹的Android使用AudioRecord判斷是否有音頻輸入,多條目的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 一文吃透Android如何處理全局異常

    一文吃透Android如何處理全局異常

    這篇文章主要為大家詳細介紹了Android中處理全局異常的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • Android下拉刷新上拉加載更多左滑動刪除

    Android下拉刷新上拉加載更多左滑動刪除

    本文給大家分享一段代碼實現Android下拉刷新上拉加載更多仿ios左滑動刪除item,非常實用,代碼簡單易懂,特此分享腳本之家平臺供大家學習
    2016-01-01
  • listview里子項有按鈕的情況使用介紹

    listview里子項有按鈕的情況使用介紹

    不知大家有沒有遇到過listview里子項有按鈕的情況哈,本文自定義了按鈕并且在布局中做了引用,適合初學者哦,感興趣的也可以了解下
    2013-03-03
  • Android喚醒、解鎖屏幕代碼實例

    Android喚醒、解鎖屏幕代碼實例

    這篇文章主要介紹了Android喚醒、解鎖屏幕代碼實例,本文講解了喚醒、解鎖屏幕需要的權限和操作代碼實例,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-05-05
  • Android中的廣播、服務、數據庫、通知、包等術語的原理和介紹(圖解)

    Android中的廣播、服務、數據庫、通知、包等術語的原理和介紹(圖解)

    這篇文章主要介紹了Android中的廣播、服務、數據庫、通知、包等術語的原理和介紹(圖解),本文用圖文方式總結了Android中的一些開發(fā)術語,需要的朋友可以參考下
    2014-10-10
  • 新浪微博第三方登錄界面上下拉伸圖片之第三方開源PullToZoomListViewEx(一)

    新浪微博第三方登錄界面上下拉伸圖片之第三方開源PullToZoomListViewEx(一)

    PullZoomView要實現兩類,一類是典型的Android ListView,另外一類是Android 的scroll view。本文先介紹PullZoomView在ListView上的實現:PullToZoomListViewEx
    2015-12-12
  • go語言之美迅速打rpm包實現詳解

    go語言之美迅速打rpm包實現詳解

    這篇文章主要為大家介紹了go語言之美迅速打rpm包實現詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Android神兵利器之Image Asset Studio的實現

    Android神兵利器之Image Asset Studio的實現

    這篇文章主要介紹了Android神兵利器之Image Asset Studio的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Android 高效圖片壓縮的實現

    Android 高效圖片壓縮的實現

    這篇文章主要介紹了Android 高效圖片壓縮的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Android架構組件Room指南

    Android架構組件Room指南

    Room是Google推出的Android架構組件庫中的數據持久化組件庫, 也可以說是在SQLite上實現的一套ORM解決方案。下面通過本文給大家介紹Android架構組件Room指南,需要的朋友參考下吧
    2017-12-12

最新評論

扎兰屯市| 海城市| 肇源县| 民乐县| 来凤县| 砚山县| 宁远县| 吐鲁番市| 荔浦县| 连南| 东明县| 阜新市| 茶陵县| 元氏县| 浠水县| 闵行区| 漳浦县| 祥云县| 华阴市| 桃园市| 沙田区| 盘锦市| 酒泉市| 沾益县| 阆中市| 临桂县| 怀远县| 乡宁县| 盘山县| 白水县| 定陶县| 科技| 横山县| 莱芜市| 岳西县| 高平市| 外汇| 滕州市| 高邮市| 哈密市| 宜春市|