2019独角兽企业重金招聘Python工程师标准>>>

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

监听电量,实现关闭手电
手电图标实现在FlashlightTile.java

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

当电量低于16%,不能打开手电筒,并弹出提示框
当电量低于16%,如果手电筒处于开启状态,关闭手电筒。
public class FlashlightTile extends QSTileImpl<BooleanState> 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);
+           }
+       }
+    }

}

转载于:https://my.oschina.net/u/920274/blog/3007267

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

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

    任务:当电流低于16%的时候,关闭手电,并且在提醒用户不能打开. 监听电量,实现关闭手电 手电图标实现在FlashlightTile.java 监听电量,一般会使用广播,但是SystemUI Batt ...

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

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

  3. android低电量模式吗,Android P 省电模式(LowPowerMode)(二) ------ 省电行为

    在上篇文章Android P 省电模式(LowPowerMode)(一) ------ 省电模式手动开启流程 中最后分析到,开启省电模式后,会在 BatterySaverController 中回调所 ...

  4. android低电量提示,Android4.4开发之电池低电量告警提示原理与实现方法分析

    本文实例讲述了Android4.4电池低电量告警提示原理与实现方法.分享给大家供大家参考,具体如下: 之前版本的电池电量低是通过发送 intent ACTION_BATTERY_LOW来实现的,而在a ...

  5. android 低电量卡,Android11 增加低电量通知

    修改shouldSendBatteryLowLocked判断条件. //frameworks\base\services\core\java\com\android\server\BatterySer ...

  6. android 低电量,如何在Android设备中模拟低电量

    默认情况下,模拟低电量是不知道的(如果您使用eclipse作为im). 但是如果你在linux中,你可以使用telnet连接到本地主机模拟器并执行'Power'动作(没有使用它们也许你可以试试) ht ...

  7. Android 10.0增加低电量弹窗

    在做定制化开发中,对于低电量提醒的功能,系统会在状态栏中弹出通知进行提示,但是如果隐藏了状态栏 就看不到提示了 所以客户要求增加个低电量弹窗功能 发现在SystemUI里面.发现SystemUI涵盖的 ...

  8. android 低电量模式吗,iPhone一直开着低电量模式会怎么样?

    相比Android上那些五花八门的省电技巧来说,iOS系统的省电方法很简单:"打开低电量模式,完."在这个模式下,系统会通过减弱或者关闭一些功能如:电子邮件获取.嘿Siri.后台应 ...

  9. 如何检测iPhone设备处于低电量模式

    在iOS9中,苹果为iPhone增加了低电量模式,开启低电量模式后,系统会为了节约电量而停止一些耗电的行为,例如接收邮件,通过Hey Siri唤起,后台消息推送等. 很重要的一点是系统不会为用户自动打 ...

最新文章

  1. mybaits的模糊查询_mybatis模糊查询防止SQL注入(很详细)
  2. 【从零学习OpenCV 4】Mat类构造与赋值
  3. 8086_显存相关知识
  4. SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 SAP UI5 表格控件使用方法介绍试读版
  5. PHP函数之HTMLSPECIALCHARS_DECODE
  6. 2017年度中国专利代理十强
  7. 在HTML5中,用getCurrentPosition()获取用户的当前位置
  8. Memcached原理与应用
  9. 迅雷赚钱宝变砖TTL修复教程赚钱宝刷机
  10. 使用DroidCam将手机作为PC的摄像头
  11. 计算机用户文件夹加密,如何加密文件夹?手把手教你给文件夹加密方法
  12. cookie的工作原理、cookie的重要性
  13. 大学c语言机试是老师阅卷么,最近,我们找了一些老师聊了聊
  14. Unity子物体脱离父物体,解除父子关系,子物体不随父物体移动
  15. goto加密php,PHP文件解密求大神思路,PHP加密后有大量goto语句
  16. html5 统计图 等值线,等值线及图表信息的判读5.doc
  17. 官能化poss甲基丙烯酰氧丙基笼型聚倍半硅氧烷
  18. 二分图 恶补定义!!!
  19. html条码枪响应慢,条码扫描枪使用时的常见问题
  20. 【20220501】众人眼中的架构师

热门文章

  1. python的dropna函数_Pandas dropna()函数不工作
  2. 基于安全运营中心的工作总结
  3. 400元左右的蓝牙耳机啥牌子好?400元价位蓝牙耳机推荐
  4. dynamic-datasource配置多数据源
  5. 图形编程和机器人编程的区别
  6. 代码随想录刷题总结:数组与字符串
  7. mysql创建数据表并添加数据的相关命令及操作(二)
  8. mysql创建函数执行sql语句_MySQL mysql_query 函数执行SQL语句
  9. Tomcat运行一段时间后访问变慢分析历程
  10. linux磁盘配额软限制和硬限制,【张安东笔记】linux 磁盘配额管理