Android手機麥克風和揚聲器被占用 | 您所在的位置:網(wǎng)站首頁 › 屬猴女八零年二零二零年運勢如何 › Android手機麥克風和揚聲器被占用 |
1、麥克風被占用
做過Android音視頻開發(fā)的可能會碰到過這樣的問題,在錄音時,發(fā)現(xiàn)麥克風被占用,解決辦法也很簡單,給個提示說麥克風被占用即可,如何知道麥克風被占用呢?根據(jù)網(wǎng)上答案,原理就是開一個錄音試試,如果不能錄音,說明被占用了,代碼如下: /** 判斷麥克風是有效,有效返回true,否則返回false */ fun validateMicAvailability(): Boolean { var available = false val recorder = AudioRecord( MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_DEFAULT, 44100 ) try { Timber.i("麥克風當前狀態(tài):${recorder.recordingState}") // 使用MediaRecorder正在錄音時,調(diào)用此方法發(fā)現(xiàn)狀態(tài)也是停止狀態(tài), // 所以這個狀態(tài)不可信,具體還是要看能否啟動錄音來判斷 recorder.startRecording() // 即使麥克風被占用,這里調(diào)用也不會拋異常。但如果沒被占用,則錄制狀態(tài)會變成AudioRecord.RECORDSTATE_RECORDING Timber.i("調(diào)用錄制后麥克風當前狀態(tài):${recorder.recordingState}") if (recorder.recordingState == AudioRecord.RECORDSTATE_RECORDING) { available = true Timber.i("麥克風開始錄制,沒有被占用") } else { Timber.i("麥克風沒有開始錄制,說明被占用") } } catch (e: Exception) { Timber.e(e, "發(fā)生異常了,應該是麥克風被占用了") } finally { recorder.release() } return available } 2、揚聲器被占用什么揚聲器還能被占用?對于麥克風被占用應該很多人是知道的,但是很多人不知道揚聲器也會被占用,在搜索這個知識點的時候就會發(fā)現(xiàn)找不到答案,因為開發(fā)這一塊的相比錄音這一塊的要少的多。當我們打電話時,揚聲器或者說聽筒就會被占用,你此時放音樂肯定是沒有聲音的。 公司里有個項目用到了一個開源框架,已經(jīng)實現(xiàn)了語音通話功能,領導希望實現(xiàn)按一下手機的一個按鍵實現(xiàn)禁止說話,再按一下又可以說話,這只是對于自己是否可以說話,但是聽是一直都可以聽的,就像使用對講機一樣,有時候,你不看屏幕的話,你不知道當前是否打開了說話的開關,所以希望在按這個開關鍵的時候發(fā)出提示音,開是一個提示音,關又是另一個提示音,這樣即使不看屏幕的顯示狀態(tài)也能知道當前的說話開關狀態(tài)是開還是關,看似很簡單的功能,不就是播放兩個提示音嘛,我三下兩除二就把代碼寫好了,但是用到項目中時發(fā)現(xiàn)提示音并沒有發(fā)出聲響來,剛開始以為代碼有問題,后來才知道原來揚聲器也會被占用的,當語音通話的時候,聲音類型是設置成了通話類型的,只要設置成了通話類型,自動就會給你占用揚聲器,避免語音時還能聽到別的軟件發(fā)出來的聲音,后來試過把聲音類型改成Music,問題解決,但是仔細想想,人家系統(tǒng)既然設置通話類型應該占用揚聲器,肯定是有一定的道理的,語音通話了,就不應該讓音樂播放器發(fā)出聲音,后來在同事的提醒下解決了問題,所以說同事之間的交流還是很有必要的。 解決方案: 既然語音時占用了揚聲器,是你的應用在語音,那就是你的應用在占用揚聲器,則我們可以在使用揚聲器的地方去播放提示音即可,公司的項目是使用AudioTrack來播放來自網(wǎng)絡的語音流的,它接收的是PCM數(shù)據(jù)的字節(jié)數(shù)組,所以我們就把提示音轉(zhuǎn)換為PCM格式保存為文件,放在項目中,然后通過輸入流讀入內(nèi)存,因為容量不算大,很短的語音,但也不算小,所以我不想每次播放時都讀這個文件,所以我就使用了軟引用,把文件讀到字節(jié)數(shù)組后保存在軟引用中,內(nèi)存不足時可以回收,使用時先從軟引用拿,拿不到再讀文件,讀到了又放入軟引用中。 |
今日新聞 |
推薦新聞 |
專題文章 |
CopyRight 2018-2019 實驗室設備網(wǎng) 版權所有 |