请勿打扰模式 - 始终保持静音来电

时间:2015-02-27 07:14:36

标签: android android-audiomanager

我有一个带有集成音乐播放器的应用。我不希望来电打断音乐。

我使用以下功能:

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)

1 个答案:

答案 0 :(得分:0)

你的意思是集成音乐播放器?你能改变音乐应用的代码吗?

播放器停止播放,因为它会收听PhoneStateChanges - void onCallEvent(int state, String number);
如果您可以更改播放器的代码,则应在此方法中检查静音模式 - 如果是,则不要停止播放。

如果您无法更改播放器的代码 - 您可以使用具有音频焦点偏好的高级播放器。例如,poweramp有这样的选择。将呼叫中的设置/音频/音频焦点/暂停设置为假(它可以正常工作,现在进行测试)。但是你应该一直手动更改它。