Android не воспроизводит звуковой эффект, когда включен режим «Не беспокоить»

1

Я использую MediaPlayer для воспроизведения звукового эффекта. Однако, когда DnD (Не беспокоить) включен, он все равно воспроизводит звук.

Это мой код:

public static void playSound(Context context, @RawRes int soundId)
{
    MediaPlayer mp = MediaPlayer.create(context, soundId);
    mp.start();
    mp.setOnCompletionListener(mediaPlayer -> {
        mp.release();
    });
}

Я попытался установить тип аудиопотока следующим образом, но тогда мой звук не будет воспроизводиться вообще:

mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);

Как инициализировать медиаплеер, чтобы мой звук делал следующее:

  • DnD off: играть
  • DnD Полная тишина: не играй
  • Только сигналы тревоги DnD: не играть
  • Только приоритет DnD: не играть

В настоящее время звук отключается только когда DnD находится в режиме полной тишины.

Единственное, о чем я могу думать сейчас, - это восстановить настройку DnD и воспроизводить звук, только если он выключен. Но это больше похоже на обходной путь для меня.

Теги:
silent
android-mediaplayer
android-audiomanager
android-sound

1 ответ

0

Вы можете сначала получить статус режима " Do not disturb ", как это

 try {
        Settings.Global.getInt(getContentResolver(), "zen_mode"); // this return an int
    } catch (Settings.SettingNotFoundException e) {
        e.printStackTrace();
    }

Это утверждение возвращает значение типа int, с которым вы можете работать следующим образом

  • 0 - если DnD выключен.
  • 1 - если DnD включен - только приоритет
  • 2 - если DnD включен - полная тишина
  • 3 - если DnD включен - только сигналы тревоги

Теперь все, что вам нужно сделать, - это простое утверждение if и вы соответственно проигрываете или останавливаете звук.

  • 0
    Да, я знаю, что это возможно, но, как я уже упоминал в своем вопросе, это похоже на обходной путь. Разве я не могу воспроизводить звуки с определенным приоритетом, которые автоматически отключаются при включении DnD?
  • 0
    Поскольку это will automatically get silenced when DnD is on вы можете создать BroadcastReceiver который будет прослушивать состояние DnD и действовать соответственно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню