如何将铃声模式完全设置为静音?
How to completely set ringer mode to silent?
我正在尝试制作一个应用程序,使用 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 that will be silent and will not
vibrate. (This overrides the vibrate setting.)
但是我发现我的 phone 还在震动。它只是将“请勿打扰”设置为开启并将铃声模式更改为振动。我尝试将其设置为 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 仍然认为 phone 在免打扰打开的情况下处于静音模式,即使手动将铃声模式设置为正常模式。所以,我需要先将铃声模式设置为正常模式,等待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);
我正在尝试制作一个应用程序,使用 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 that will be silent and will not vibrate. (This overrides the vibrate setting.)
但是我发现我的 phone 还在震动。它只是将“请勿打扰”设置为开启并将铃声模式更改为振动。我尝试将其设置为 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 仍然认为 phone 在免打扰打开的情况下处于静音模式,即使手动将铃声模式设置为正常模式。所以,我需要先将铃声模式设置为正常模式,等待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);