启用“请勿打扰”时,Android无法播放声音效果

时间:2019-04-12 12:56:19

标签: android android-mediaplayer android-audiomanager silent android-sound

我正在使用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设置,并且仅在声音关闭时播放声音。但这对我来说似乎是一个变通方法。

1 个答案:

答案 0 :(得分: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语句,您就可以相应地播放或停止音频。

您可以这样停止MediaPlayer

mp.stop();