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

Я использую 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 и воспроизводить звук, только если он выключен. Но это больше похоже на обходной путь.

1 Ответ

0 голосов
/ 12 апреля 2019

Сначала вы можете получить состояние режима 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, и вы соответственно проигрываете или останавливаете звук.

Вы можете остановить MediaPlayer, например,

mp.stop();
...