如何将铃声模式完全设置为静音?

时间:2019-05-12 14:34:11

标签: android alarmmanager android-audiomanager

我正在尝试制作一个使用AlarmManager将铃声模式自动设置为静音的应用程序。它正在运行,但未按预期运行。

@Override
public void onReceive(Context context, Intent intent) {
    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}

基于Android文档:

  

RINGER_MODE_SILENT-铃声模式,将静音而不会   震动。 (这会覆盖振动设置。)

但是我发现我的手机仍然在振动。它只是将“请勿打扰”设置为“开”并更改振铃器模式以使其振动。我试图将其设置为RINGER_MODE_NORMAL和RINGER_MODE_VIBRATE,它可以工作,但不能用于RINGER_MODE_SILENT。我已经授予我的应用访问“请勿打扰”的权限,并使用以下权限:

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

是否存在任何错误或缺少的步骤?

1 个答案:

答案 0 :(得分:0)

最后找到了解决此问题的方法。似乎,如果“请勿打扰”功能开启,即使铃声模式已手动设置为“普通模式”,Android仍将手机视为处于静音模式。因此,我需要先将铃声模式设置为普通模式,等待1秒钟,然后再次设置为静音模式。

if(audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {
        audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}

// Wait for 1 second
// Direct changing won't set the Do Not Disturb on
try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);