天天看點

利用Android的麥克風擷取音量資料

最近在做一個測試,用手機的話筒來測試環境音量大小,但是音量的變化極敏感,是以一般測一小段時間的均值做為最終測試值。為了保證UI的流暢,我們不可能等着系統測試完整個時間段,這個時候可以啟動一個子線程做測試,測試完成将結果傳回到MainActivity顯示。基本思路參見:

但是,我在測試中,隻要一運作,點選測試啟動子線程就會出錯。

最後,仔細看了一下Log資訊,發現了下面一條:

AudioRecord: AudioFlinger could not create record track, status: -1

此時,才推測是系統的權限問題。搜尋一下,發現的确如此,但是我在manifest中授權了啊!?

<uses-permission android:name="android.permission.RECORD_AUDIO" />
           

原因:

Android6.0之後對權限的管理更加嚴格了,permission:android.permission.RECORD_AUDIO 屬于危險權限,需要彈出視窗讓使用者确認。

測試:在手機中->設定->應用程式->找到應用并設定權限->麥克風