華為EMUI9錄製適配麥克風被自己佔用導致無法使用的解決方案

山有木xi發表於2020-12-20

在華為EMUI9(Android9.0)的裝置上,錄製影片的功能在第一次可以正常使用,第二次卻拋異常,當我列印log的時候卻提示

mediaRecorder?.start()

這句話報的異常,於是去查閱各種資料,發現給出的提示是音訊設定的地方出錯,再深入發現,是麥克風被佔用

當時的第一想法是,哪個app佔用了我的麥克風,於是清空後臺,問題還是存在,這就有點奇奇怪怪了,索性在錄製影片的時候將麥克風關閉,也就是註釋以下程式碼

setAudioSource(MediaRecorder.AudioSource.MIC )
setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)

發現功能一切正常,基本確認就是麥克風備用的問題,而奇怪的是,這個問題只出現在華為的EMUI9上面,EMUI10和其他裝置的Android9.0都不曾出現這個問題,於是就有點懵,資料也沒給出個解決方案

最開始我的想法是

  1. 第一種:限制華為EMUI9使用麥克風

  2. 第二種:第一次使用後在後臺殺死自己的app

但是這些都是不完美的解決方案

於是埋頭苦幹尋找解決方案,終於讓我發現蹊蹺了

我在錄製影片結束後使用的是

mediaRecorder?.stop()
mediaRecorder?.reset()

也即是重置而不是release釋放資源,為什麼要使用reset呢,因為我的錄製類用的是單例,為了方便後面的使用則直接使用的是reset,在介面銷燬的時候使用release,而華為的EMUI9在rest時居然沒有釋放麥克風資源,就導致了,我自己佔用了我的自己的麥克風資源,導致我無法正常使用功能!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2743771/,如需轉載,請註明出處,否則將追究法律責任。

相關文章