【问题标题】:Unmute stream in silent mode在静音模式下取消静音
【发布时间】:2013-09-04 20:43:48
【问题描述】:

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

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

【问题讨论】:

    标签: android silent


    【解决方案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 源链接:https://android.googlesource.com/platform/packages/apps/AlarmClock/+/donut-release2/src/com/android/alarmclock/SettingsActivity.java

    【讨论】:

    • 谢谢 我有同样的问题。这是系统范围的设置吗?所以我必须在播放声音后将其设置回来?你是怎么解决的?
    • 是的,它是系统范围的设置。所以,我会在之后恢复它。
    • 但是什么时候?在你调用 notificationManager.notify() 之后?
    • 正确答案“不再需要时做”。在我的情况下,我在夜间个人资料结束后回滚(我开发了 DND 应用程序)。请记住,您应该恢复到以前的值,而不是永久关闭它。否则用户可能会在他期望的时候错过静音模式下的早晨闹钟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多