2012-12-03 207 views
0

我想在用戶接聽電話時播放具有相同揚聲器和音量的mp3音頻文件。 我使用下面的代碼Android - 通過揚聲器播放音頻

int result = audioManager.requestAudioFocus(afChangeListener, 
        AudioManager.MODE_IN_CALL, 
        AudioManager.AUDIOFOCUS_GAIN); 
audioManager.setSpeakerphoneOn(true); 

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

在清單

,但它不工作。音量非常高。 有什麼想法?

回答

0

setSpeakerPhoneOn(很可能)會做的是將音樂和語音呼叫路由到揚聲器,在這種情況下,它們可能會混合在一起,並且音樂可能會被下采樣到語音呼叫採樣率( 8或16kHz)。

您可以嘗試的一件事是我在how to turn speaker on/off programatically in android 4.0 中提出的建議。這樣可以讓您在語音通話音頻路由至耳機時僅讓音樂路由至揚聲器。儘管如此,但並不保證能夠在所有設備上工作。

+0

我正在爲博物館寫音頻指南。音頻指南的內容保存在mp3文件中。我希望這個音頻文件的播放與電話的音量相同,以便用戶必須將手機靠近耳朵。我沒有播放任何音樂 – user422688

+0

好的,所以這裏沒有真正的語音通話。這聽起來像你真正想要的是將音樂路由到耳機。在這種情況下,您可以試着擺脫對setSpeakerPhoneOn的調用,而改用媒體播放器對象調用setAudioStreamType,並將其類型設置爲STREAM_VOICE_CALL。這應該將來自MediaPlayer的音頻路由到與語音呼叫路由到的設備相同的設備。 – Michael

相關問題