Режим "Не беспокоить" - всегда тихие входящие звонки
У меня есть приложение со встроенным музыкальным проигрывателем. Я не хочу, чтобы музыка прерывалась входящими звонками.
Для этого я использую следующую функцию:
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" (работает, проверено сейчас) Но вы должны все время менять его вручную.