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

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

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

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

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;
    }
}

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

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判斷是否有音頻輸入,多條目的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

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

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

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

    Android下拉刷新上拉加載更多左滑動(dòng)刪除

    本文給大家分享一段代碼實(shí)現(xiàn)Android下拉刷新上拉加載更多仿ios左滑動(dòng)刪除item,非常實(shí)用,代碼簡(jiǎn)單易懂,特此分享腳本之家平臺(tái)供大家學(xué)習(xí)
    2016-01-01
  • listview里子項(xiàng)有按鈕的情況使用介紹

    listview里子項(xiàng)有按鈕的情況使用介紹

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

    Android喚醒、解鎖屏幕代碼實(shí)例

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

    Android中的廣播、服務(wù)、數(shù)據(jù)庫(kù)、通知、包等術(shù)語(yǔ)的原理和介紹(圖解)

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

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

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

    go語(yǔ)言之美迅速打rpm包實(shí)現(xiàn)詳解

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

    Android神兵利器之Image Asset Studio的實(shí)現(xiàn)

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

    Android 高效圖片壓縮的實(shí)現(xiàn)

    這篇文章主要介紹了Android 高效圖片壓縮的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Android架構(gòu)組件Room指南

    Android架構(gòu)組件Room指南

    Room是Google推出的Android架構(gòu)組件庫(kù)中的數(shù)據(jù)持久化組件庫(kù), 也可以說(shuō)是在SQLite上實(shí)現(xiàn)的一套ORM解決方案。下面通過(guò)本文給大家介紹Android架構(gòu)組件Room指南,需要的朋友參考下吧
    2017-12-12

最新評(píng)論

三江| 乐安县| 耿马| 江达县| 闽清县| 宾阳县| 潼关县| 桦川县| 新竹县| 沽源县| 梅州市| 社会| 东光县| 隆林| 南宁市| 海城市| 宁远县| 黄浦区| 宜君县| 绍兴市| 阜新| 昌宁县| 怀柔区| 仁布县| 汾阳市| 道真| 象山县| 修武县| 黑水县| 安吉县| 梅河口市| 屯门区| 九江市| 务川| 麟游县| 涿州市| 垣曲县| 东乌珠穆沁旗| 海阳市| 太仆寺旗| 抚松县|