我正在使用 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 完全安静:不要玩
- 仅限 DnD 闹钟:请勿播放
- 仅限 DnD 优先:不玩
目前,只有当 DnD 处于完全静音模式时,声音才会静音。
我现在唯一能想到的就是检索 DnD 设置并仅在关闭时播放声音。但这对我来说似乎更像是一种解决方法。
最佳答案
您可以先像这样获取请勿打扰
模式的状态
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();
关于Android 开启勿扰模式时不播放音效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652127/