通过 MediaPlayer 播放语音邮件可使警报音量静音

Playing voicemail via MediaPlayer turns alarm volume silent

我使用 MediaPlayer 从 URL 播放音频文件。该文件播放正常,但播放后(如果应用程序未被明确杀死),闹钟铃声无声。我需要在播放结束时 clear/reset 做什么才能避免这种情况发生?

我用来控制语音信箱播放的文件代码。 http://hastebin.com/ehijobuwoc.coffee

您可以在播放开始时尝试使用 getStreamVolume,然后在播放结束后使用 setStreamVolume 将其设置回来。

http://developer.android.com/reference/android/media/AudioManager.html#setStreamVolume(int, int, int)

好的,找到了有用的东西。解决了闹钟问题,让我可以通过耳机播放语音信箱。

我需要在 onStop() 中将 setMode 恢复到开始时的状态:

// set mode back to normal, and speakerphone back to true.
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(prevMode);
am.setSpeakerphoneOn(true);

并在初始化中:

private void initMediaPlayer() {
    // Make the media play through earpiece instead of through speaker(default)
    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    prevMode = am.getMode();
    am.setMode(AudioManager.MODE_IN_COMMUNICATION);
    am.setSpeakerphoneOn(false);

感谢@DreadfulWeather 带我找到这个答案,并提出了一些有用的问题。