Android5.0 静音模式下让闹钟仍然响铃





最近在看Android 5.0的代码,发现可以通过音量键来控制情景模式,而且在此次升级的静音模式可谓是完全静音了,就连闹钟都不会发音。

我要做一个可以在静音模式下选择闹钟是否仍然响铃的开关。

本文仅为学习笔记,大神勿喷。



在DeskClock源码中,com.android.deskclock.SettingsActivity.java 中


有如下字段来记录在静音模式下是否响闹钟铃音,不过这个在4.4开始功能就被移除了。


public static final String KEY_ALARM_IN_SILENT_MODE = "alarm_in_silent_mode";


    private void refresh() {
        ....
        //这个在5.0中已经被移除
        final CheckBoxPreference alarmInSilentModePref =
                (CheckBoxPreference) findPreference(KEY_ALARM_IN_SILENT_MODE);
        final int silentModeStreams =
                Settings.System.getInt (getContentResolver(),
                        Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);
        alarmInSilentModePref.setChecked(
                (silentModeStreams & ALARM_STREAM_TYPE_BIT) == 0); 


    }


    是由一个CheckBox开关来控制如下。


    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
            Preference preference) {
        if (KEY_ALARM_IN_SILENT_MODE.equals(preference.getKey())) {
            CheckBoxPreference pref = (CheckBoxPreference) preference;
            int ringerModeStreamTypes = Settings.System.getInt(
                    getContentResolver(),
                    Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);


            if (pref.isChecked()) {
                ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT;
            } else {
                ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT;
            }


            Settings.System.putInt(getContentResolver(),
                    Settings.System.MODE_RINGER_STREAMS_AFFECTED,
                    ringerModeStreamTypes);


            return true;
        }


        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
    
    
    //原来这个通过音量键控制的情景模式窗口实在SystemUI中实现的
    com.android.systemui.volume.ZenModePanel.java
    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();


        mZenButtons = (SegmentedButtons) findViewById(R.id.zen_buttons);
        //在这里创建了三个按钮,接下来看下addButton方法
        mZenButtons.addButton(R.string.interruption_level_none, Global.ZEN_MODE_NO_INTERRUPTIONS);
        mZenButtons.addButton(R.string.interruption_level_priority,
                Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
        mZenButtons.addButton(R.strin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值