我有一个带有集成音乐播放器的应用。我不希望来电打断音乐。
我使用以下功能:
public static void updateDoNotDisturbMode(boolean enabled, boolean checkPrefs)
{
...
AudioManager audioManager = ((AudioManager) MainApp.get().getSystemService(Context.AUDIO_SERVICE));
NotificationManager notificationManager = (NotificationManager) MainApp.get().getSystemService(Context.NOTIFICATION_SERVICE);
// audioManager.setMode(AudioManager.MODE_IN_CALL);
if (!enabled)
{
audioManager.setStreamSolo(AudioManager.STREAM_MUSIC, false);
audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, false);
audioManager.setStreamMute(AudioManager.STREAM_RING, false);
audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
...
}
else
{
audioManager.setStreamSolo(AudioManager.STREAM_MUSIC, true);
audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, true);
audioManager.setStreamMute(AudioManager.STREAM_RING, true);
audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
...
}
}
什么有用
什么行不通
即使连接了耳机,如何避免来电中断我的音乐播放器?
TARGET SDK
只有4.2和upwarts ......(包括5)
答案 0 :(得分:0)
你的意思是集成音乐播放器?你能改变音乐应用的代码吗?
播放器停止播放,因为它会收听PhoneStateChanges - void onCallEvent(int state, String number);
如果您可以更改播放器的代码,则应在此方法中检查静音模式 - 如果是,则不要停止播放。
如果您无法更改播放器的代码 - 您可以使用具有音频焦点偏好的高级播放器。例如,poweramp有这样的选择。将呼叫中的设置/音频/音频焦点/暂停设置为假(它可以正常工作,现在进行测试)。但是你应该一直手动更改它。