【问题标题】:How to completely set ringer mode to silent?如何将铃声模式完全设置为静音?
【发布时间】:2019-05-12 14:34:11
【问题描述】:

我正在尝试制作一个应用程序,该应用程序将使用 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" />

是否有任何错误或遗漏的步骤?

【问题讨论】:

    标签: android alarmmanager android-audiomanager


    【解决方案1】:

    终于找到了解决这个问题的办法。如果“请勿打扰”打开,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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2011-09-12
      • 2011-06-03
      • 1970-01-01
      • 2011-06-21
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多