java 手电筒 电池_《SystemUI》限制低电量打开手电筒

任务:当电流低于16%的时候,关闭手电,并且在提醒用户不能打开。

监听电量,实现关闭手电

手电图标实现在FlashlightTile.java

监听电量,一般会使用广播,但是SystemUI BatteryController注册了电量广播,可以利用BatteryController里面有相关的操作监听,

当电量低于16%,不能打开手电筒,并弹出提示框

当电量低于16%,如果手电筒处于开启状态,关闭手电筒。

public class FlashlightTile extends QSTileImpl implements

FlashlightController.FlashlightListener ,

+        BatteryController.BatteryStateChangeCallback

{

private final Icon mIcon = ResourceIcon.get(R.drawable.ic_signal_flashlight);

private final FlashlightController mFlashlightController;

+    // add for PCAAO-1862

+    private int mLevel = 100;

+    private final int lowLevel = 16;

+    private final BatteryController mBatteryController;

+    // END.

public FlashlightTile(QSHost host) {

super(host);

mFlashlightController = Dependency.get(FlashlightController.class);

+        mBatteryController = Dependency.get(BatteryController.class);

}

@Override

public void handleSetListening(boolean listening) {

Log.i("FlashlightTile","handleSetListening "+listening);

if (listening) {

+           mFlashlightController.addCallback(this);

mBatteryController.addCallback(this);

} else {

mFlashlightController.removeCallback(this);

+            mBatteryController.removeCallback(this);

}

}

@Override

protected void handleClick() {

if (ActivityManager.isUserAMonkey()) {

return;

}

+        // add for PCAAO-1862

+        boolean flashLightEnable = mFlashlightController.isEnabled();

+        if (!flashLightEnable && mLevel <= lowLevel) {

+            SystemUIDialog dialog = new SystemUIDialog(mContext);

+            dialog.setTitle(R.string.airplane_dlg_title);

+            dialog.setMessage(R.string.flash_light_dlg_msg);

+            dialog.setPositiveButton(R.string.yes, null);

+            //dialog.setNegativeButton(R.string.cancel, null);

+            dialog.setShowForAllUsers(true);

+            dialog.show();

+            return;

+        }

+        // END.

boolean newState = !mState.value;

refreshState(newState);

mFlashlightController.setFlashlight(newState);

}

+        @Override

+    public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {

+        mLevel = level;

+

+       //if

+       boolean flashLightEnable = mFlashlightController.isEnabled();

+       Log.i("FlashlightTile","flashLightEnable ,mState.value"+flashLightEnable+","+mState.value);

+       if (mLevel <= lowLevel && flashLightEnable && mState.value){

+           refreshState(false);

+           if(mFlashlightController!=null){

+             mFlashlightController.setFlashlight(false);

+           }

+       }

+    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值