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 关闭:播放
  • DnD 完全沉默:不要玩
  • 仅限 DnD 警报:不要玩
  • 仅限 DnD 优先级:不玩

目前,只有当 DnD 处于完全静音模式时,声音才会静音。

我现在唯一能想到的就是检索 DnD 设置,只有在它关闭时才播放声音。但这对我来说似乎更像是一种解决方法。

4

1 回答 1

1

您可以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();
于 2019-04-12T13:33:18.340 回答