2012-12-03 191 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

相关问题