Android8.0 LED灯上层控制之--battery light

BatteryService.java

1. 定义及初始化

    private Led mLed;        //定义

    public BatteryService(Context context) {
        super(context);

        mContext = context;
        mHandler = new Handler(true /*async*/);
        mLed = new Led(context, getLocalService(LightsManager.class));    //获取led灯

2. 电量变化时,更新灯的状态

    private void update(BatteryProperties props) {
        synchronized (mLock) {
            if (!mUpdatesStopped) {
                mBatteryProps = props;
                // Process the new values.
                processValuesLocked(false);
            } else {
                mLastBatteryProps.set(props);
            }
        }
    }

    private void processValuesLocked(boolean force) {
        ...
        ...
            // We are doing this after sending the above broadcasts, so anything processing
            // them will get the new sequence number at that point.  (See for example how testing
            // of JobScheduler's BatteryController works.)
            sendIntentLocked();        //发送电量的信息

            // Update the battery LED
            mLed.updateLightsLocked();        //刷新灯的状态

3. 刷新灯的状态

    private final class Led {        //内部类
        private final Light mBatteryLight;

        private final int mBatteryLowARGB;
        private final int mBatteryMediumARGB;
        private final int mBatteryFullARGB;
        private final int mBatteryLedOn;
        private final int mBatteryLedOff;

        public Led(Context context, LightsManager lights) {        //初始化灯的属性
            mBatteryLight = lights.getLight(LightsManager.LIGHT_ID_BATTERY);    //从LightsManager拿到电池灯

            mBatteryLowARGB = context.getResources().getInteger(
                    com.android.internal.R.integer.config_notificationsBatteryLowARGB);
            mBatteryMediumARGB = context.getResources().getInteger(
                    com.android.internal.R.integer.config_notificationsBatteryMediumARGB);
            mBatteryFullARGB = context.getResources().getInteger(
                    com.android.internal.R.integer.config_notificationsBatteryFullARGB);
            mBatteryLedOn = context.getResources().getInteger(
                    com.android.internal.R.integer.config_notificationsBatteryLedOn);
            mBatteryLedOff = context.getResources().getInteger(
                    com.android.internal.R.integer.config_notificationsBatteryLedOff);
        }

        /**
         * Synchronize on BatteryService.
         */
        public void updateLightsLocked() {
            final int level = mBatteryProps.batteryLevel;    //电量百分比,50%就为50
            final int status = mBatteryProps.batteryStatus;
            if (level < mLowBatteryWarningLevel) {        //低电量时,mLowBatteryWarningLevel默认为15
                    if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
                        // Solid red when battery is charging
                        mBatteryLight.setColor(mBatteryLowARGB);    //充电时,常亮
                    } else {
                        // Flash red when battery is low and not charging
                        mBatteryLight.setFlashing(mBatteryLowARGB, Light.LIGHT_FLASH_TIMED,
                            mBatteryLedOn, mBatteryLedOff);    //未充电,闪烁
                    }
            } else if (status == BatteryManager.BATTERY_STATUS_CHARGING
                    || status == BatteryManager.BATTERY_STATUS_FULL) {    //非低电量且正在充电
                    if (status == BatteryManager.BATTERY_STATUS_FULL || level >= 90) {
                        // Solid green when full or charging and nearly full
                        mBatteryLight.setColor(mBatteryFullARGB);    //充电满了或电量大于90%,常亮某个颜色
                    } else {
                        // Solid orange when charging and halfway full
                        mBatteryLight.setColor(mBatteryMediumARGB);    //未充满时,常亮某个颜色
                    }
            } else {
                // No lights if not charging and not low
                mBatteryLight.turnOff();    //其他状态,关闭led
            }
        }
    }


 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值