Режим "Не беспокоить" - всегда тихие входящие звонки

У меня есть приложение со встроенным музыкальным проигрывателем. Я не хочу, чтобы музыка прерывалась входящими звонками.

Для этого я использую следующую функцию:

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 и вверх... (в том числе 5)

1 ответ

Что вы имеете в виду встроенный музыкальный проигрыватель? Можете ли вы изменить код музыкального приложения?

Игрок перестает играть, потому что он слушает PhoneStateChanges - void onCallEvent(int state, String number);
Если вы можете изменить код плеера, вы должны проверить, включен ли этот метод в этом методе - если да, не останавливайте воспроизведение.

Если вы не можете изменить код плеера - вы можете использовать продвинутый плеер с настройками аудио-фокуса. Например у Poweramp есть такая опция. Установите для параметра "Настройки" / "Аудио" / "Аудио фокус" / "Пауза в вызове" значение "false" (работает, проверено сейчас) Но вы должны все время менять его вручную.

Другие вопросы по тегам