android 6.0 SystemUI源码分析(5)-PowerUI介绍

本文介绍了Android 6.0 SystemUI中的PowerUI组件,它主要负责处理电源相关的事件,如省电模式切换、电池电量变化和屏幕开关。内容包括PowerUI的启动流程、实例化PowerManager、初始化关屏时间、使用PowerNotificationWarnings处理通知、监控电池电量并显示警告。同时,详细解析了配置文件中与低电量警告相关的数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PowerUI在SystemUI里的实现比较简单,PowerUI主要处理和Power相关的事件,比如省电模式切换,电池电量变化和开关屏事件等。

PowerUI的启动流程与SystemBars,Recents一样,因为他们都是SystemUI的子类,具体可以看前面的介绍。

    public void start() {
        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
        mScreenOffTime = mPowerManager.isScreenOn() ? -1 : SystemClock.elapsedRealtime();
        mWarnings = new PowerNotificationWarnings(mContext, getComponent(PhoneStatusBar.class));

        ContentObserver obs = new ContentObserver(mHandler) {
            @Override
            public void onChange(boolean selfChange) {
                updateBatteryWarningLevels();
            }
        };
        final ContentResolver resolver = mContext.getContentResolver();
        resolver.registerContentObserver(Settings.Global.getUriFor(
                Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL),
                false, obs, UserHandle.USER_ALL);
        updateBatteryWarningLevels();
        mReceiver.init();
    }
在PowerUI启动时,会调用start函数,start函数主要实现:

1)实例化PowerManager,因为是处理和Power相关的业务,必须实例化PowerManager.

2)初始化关屏时间,关屏时间会持续刷新。

3)实例化PowerNotificationWarnings,Power相关的事件会通过Notification方式进行处理。

4)监控电池电量,在电量不足是给出警告和提示。

5)更新电池电量等级。

 void updateBatteryWarningLevels() {
        int critLevel = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_criticalBatteryWarningLevel);

        final ContentResolver resolver = mContext.getContentResolver();
        int defWarnLevel = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_lowBatteryWarningLevel);
        int warnLevel = Settings.Global.getInt(resolver,
                Set
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值