在静默模式下取消静音流

时间:2013-09-04 20:43:49

标签: android silent

即使在静音模式下,我正在编写应播放声音通知的应用。我不想暂时关闭Silent并将其推迟。我现在正在使用ALARM流。通常它工作正常,因为默认情况下ALARM流不会静音静音。但有时却是。

如何理解当前流静音(静音模式)? 如何取消静音(不切换到普通模式)?

1 个答案:

答案 0 :(得分:1)

回答我自己的问题:

该解决方案在Android OS源代码中找到(在标准的Alarm应用程序中)。

我找到了检查并设置“静音警报”选项的方法:

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