0

我正在编写即使在静音模式下也应该播放声音通知的应用程序。我不想暂时关闭静音并延迟回滚。我现在正在使用 ALARM 流。通常它可以正常工作,因为默认情况下 ALARM 流不会静音。但有时确实如此。

我如何了解流当前是否静音(在静音模式下)?如何取消静音(无需切换到正常模式)?

4

1 回答 1

1

回答我自己的问题:

该解决方案可在 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

于 2013-10-12T09:12:47.067 回答