zoukankan      html  css  js  c++  java
  • [置顶] Android代码 监控手机电池的状态

    本文来自 Eric飞猪 老师的CSDN博客:

    Android代码---- 监控手机电池的状态(引申为可以监控手机usb线的插拔事件的监听)

    现在做手机管理软件,我是手机端的,但是在这个过程中为了使用户有更好的额体验性,要在手机端显示是否是连接电脑的状态, 连接状态很好判断, 可以走曲线救国的方式,就是当我和PC端的软件通讯的时候就可以判断已经连接上了,但是如果断开则是有两种情况:1.用户在PC端点击断开连接.2.用户拔下手机数据线(估计这个出现的概率要更加的大)那么我就写了这样的判断方式。

     1.第一种状态的出现: 可以定制广播,就是在PC端关闭这个连接的时候,PC端使用ADB命令发送一个stop广播,这样我在手机端就可以接收到这个广播来改变连接的状态

    具体是:

    Runtime.getRuntime().exec("adb shell am broadcast -a NotifyServiceStart");

    2.第二种情况出现   : 我在查询了好多的广播后都是没有测试的,有好多只不过是监听SD卡的状态的广播但是这样的话我在使用PC端管理的时候手机主要的连接方式是USB调试模式下而非大容量存储,这样就造成了我们得不到广播,但是在我观察LOG的时候看到当我插拔数据线的时候系统还是发出的广播的但是我把这个广播放在我自定义的接受者中就会报错,估计这个广播不会让我们去获得,所以我只能走曲线救国的方式了,后来就想到了电池的状态,看到了网上一些人的监听电池状态的代码想到的 ,当我拔下数据线的时候电池是放电状态 。给你看下面的代码估计就可以了解了

    switch (intent.getIntExtra("status",
                            BatteryManager.BATTERY_STATUS_UNKNOWN)) {
                    case BatteryManager.BATTERY_STATUS_CHARGING:
                        BatteryStatus = "充电状态";
                        break;
                    case BatteryManager.BATTERY_STATUS_DISCHARGING:
                        BatteryStatus = "放电状态";
                        break;
                    case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
                        BatteryStatus = "未充电";
                        break;
                    case BatteryManager.BATTERY_STATUS_FULL:
                        BatteryStatus = "充满电";
                        break;
                    case BatteryManager.BATTERY_STATUS_UNKNOWN:
                        BatteryStatus = "未知道状态";
                        break;
                    }
                    switch (intent.getIntExtra("plugged",
                            BatteryManager.BATTERY_PLUGGED_AC)) {
                    case BatteryManager.BATTERY_PLUGGED_AC:
                        BatteryStatus2 = "AC充电";
                        break;
                    case BatteryManager.BATTERY_PLUGGED_USB:
                        BatteryStatus2 = "USB充电";
                        break;
                    default:
                    	 BatteryStatus2 = "未知道状态";
    					break; 
                    }
                    switch (intent.getIntExtra("health",
                            BatteryManager.BATTERY_HEALTH_UNKNOWN)) {
                    case BatteryManager.BATTERY_HEALTH_UNKNOWN:
                        BatteryTemp = "未知错误";
                        break;
                    case BatteryManager.BATTERY_HEALTH_GOOD:
                        BatteryTemp = "状态良好";
                        break;
                    case BatteryManager.BATTERY_HEALTH_DEAD:
                        BatteryTemp = "电池没有电";
                        break;
                    case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
                        BatteryTemp = "电池电压过高";
                        break;
                    case BatteryManager.BATTERY_HEALTH_OVERHEAT:
                        BatteryTemp =  "电池过热";
                        break;


    ======>>>>>>源码在此


  • 相关阅读:
    SVN——Jenkins自动发布
    IIS之虚拟目录学习
    SVN迁移
    通过配置host,自定义域名让本地访问
    比较两个时间的大小 举例:CompareDate("12:00","11:15")
    [转]SQL Server 批量完整备份
    js前台编码,asp.net后台解码 防止前台传值到后台为乱码
    前端将图片二进制流显示在html端
    【转】解析<button>和<input type="button"> 的区别
    利用bat批处理——实现数据库的自动备份和删除
  • 原文地址:https://www.cnblogs.com/anjon520/p/3249930.html
Copyright © 2011-2022 走看看