任务:当电流低于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);

+           }

+       }

+    }

}

java 手电筒_《SystemUI》限制低电量打开手电筒相关推荐

  1. 《SystemUI》限制低电量打开手电筒

    2019独角兽企业重金招聘Python工程师标准>>> 任务:当电流低于16%的时候,关闭手电,并且在提醒用户不能打开. 监听电量,实现关闭手电 手电图标实现在FlashlightT ...

  2. 安卓手电筒_将价值10美元的手电筒砍入超高亮高级灯中

    安卓手电筒 If you're looking for a bright flashlight without paying an arm and a leg this simple hack mod ...

  3. android手电筒的源代码,Android,求打开手电筒最简练的代码

    蜂之谷 public class MainActivity extends Activity implements View.OnClickListener {    private ToggleBu ...

  4. 周志明:深入java虚拟机_虚拟面板:在低延迟环境中使用Java

    周志明:深入java虚拟机 Java越来越多地用于低延迟工作,而以前的C和C ++早已成为Java的实际选择. InfoQ聚集了该领域的四位专家,讨论了驱动趋势的因素以及在这种情况下使用Java的一些 ...

  5. 高中学历可以学java么_初高中学历能学会Java吗,低学历能学Java吗?

    初高中学历能学会Java吗,低学历能学Java吗? 2018-05-25 | 烟台 | 点击211次 | 信息编号:201792910194522310418856521472 很多人以为Java只有 ...

  6. 低电量自动关机_低电量时如何获得自动提醒以填充您的汽车油箱

    低电量自动关机 Your gas light comes on right after you pass your favorite gas station on the way home. That ...

  7. 笔记本电脑任务栏电量_如何调整Windows 7笔记本电脑上的低电量操作

    笔记本电脑任务栏电量 If you've got a netbook with really great battery life, you'll probably still have loads ...

  8. java打开jar文件怎么打开_后缀jar文件怎么打开 .jar文件如何打开

    原标题:"详解jar文件怎么打开"相关系统教程分享. 在计算机中,jar是一种软件包文件格式,以zip格式为基础,以便开发Java平台应用软件或库.那么jar文件如何打开呢?今天, ...

  9. android 低电量卡,Android中低电量的处置方法

    前段时间解了个Bug:Android系统在低电时充电,StatusBar上的充电图标不会变化,始终显示的是同一个图标 当时没有来得及整理,现在补一下 电池电量信息是从BatteryService中通过 ...

最新文章

  1. 外星人台式电脑_戴尔外星人Alienware m17笔记本19款真机评测
  2. ActiveReport的小数显示方法
  3. 05-WIFI通讯客户端搭建
  4. frp对http协议应用
  5. MyEclipse添加tomcat7出现“Value must be an existing directory”解决方案
  6. docker~aspnetcore2.0镜像缺少libgdiplus问题
  7. python爬取今日热榜数据到txt文件
  8. css实现页面标签的跳转
  9. 远不止三色,图片被压扁了,用Python的Tkinter做一个既高颜值又好用的计算器
  10. 常用英语命令(音标,释义)
  11. 安装DCOS,关于docker异常引发的调查
  12. 视频剪辑3.5版-一分钟生成上百个电影混剪视频
  13. python取出数组大于某值_Python替换NumPy数组中大于某个值的所有元素实例
  14. 使用lsof命令恢复已删除文件(正在使用的文件)
  15. 医院信息科结构化面试
  16. Mapped Statements collection does not contain value for XXX错误
  17. 【爬虫】python使用selenium抓取淘宝中的商品数据
  18. 系统架构设计笔记(13)—— 数据挖掘
  19. umi2升级到umi3
  20. 分布式、服务化的企业级 ERP 系统架构设计方案

热门文章

  1. java 微信提现(复制即用)
  2. spring boot 源码解析43-JmxMetricWriter详解
  3. 小时候,幸福很简单;长大后,简单很幸福!
  4. 学习使用PN532来复制IC门禁卡
  5. LTE 随机接入 --(1)流程
  6. 将文件从 Linux 传输到 Windows
  7. 牛逼!StarRocks 2.0正式发布,新一年,新启航,新极速!
  8. 谈谈国产FPGA现状
  9. 《2021大数据产业年度创新服务产品》榜重磅发布丨金猿奖
  10. lol国服维护可以玩别的服务器吗,LOL:除了艾欧尼亚,其他服务器都只能算是“郊区”吗?...