Я использую 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 находится в режиме полной тишины.
Единственное, о чем я могу думать сейчас, - это восстановить настройку DnD и воспроизводить звук, только если он выключен. Но это больше похоже на обходной путь для меня.
Вы можете сначала получить статус режима " Do not disturb
", как это
try {
Settings.Global.getInt(getContentResolver(), "zen_mode"); // this return an int
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
Это утверждение возвращает значение типа int, с которым вы можете работать следующим образом
Теперь все, что вам нужно сделать, - это простое утверждение if
и вы соответственно проигрываете или останавливаете звук.
will automatically get silenced when DnD is on
вы можете создатьBroadcastReceiver
который будет прослушивать состояние DnD и действовать соответственно.