我正在编写即使在静音模式下也应该播放声音通知的应用程序。我不想暂时关闭静音并延迟回滚。我现在正在使用 ALARM 流。通常它可以正常工作,因为默认情况下 ALARM 流不会静音。但有时确实如此。
我如何了解流当前是否静音(在静音模式下)?如何取消静音(无需切换到正常模式)?
回答我自己的问题:
该解决方案可在 Android 操作系统源(在标准警报应用程序中)中找到。
我找到了检查和设置选项“静音警报”的方法:
private static final int ALARM_STREAM_TYPE_BIT =
1 << AudioManager.STREAM_ALARM;
public static void setAlarmInSilent(boolean on) {
int ringerModeStreamTypes = Settings.System.getInt(
context.getContentResolver(),
Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);
if (on) {
ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT;
} else {
ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT;
}
Settings.System.putInt(context.getContentResolver(),
Settings.System.MODE_RINGER_STREAMS_AFFECTED,
ringerModeStreamTypes );
}
链接到 Android src:https ://android.googlesource.com/platform/packages/apps/AlarmClock/+/donut-release2/src/com/android/alarmclock/SettingsActivity.java