Android电池信息

2023-11-07

Android中电池信息(Battery information)的取得
      
这里介绍电池信息的取得.
       Android.content.BroadcastReceiver

       Android.os.BatteryManager


       ●
电池信息的取得,调用registerReceiver()方法。
        
1个参数,设置BroadcastReceiver实例
        
2个参数,设置追加了Intent.ACTION_BATTERY_CHANGED处理的IntentFilter实例。
       ●
BroadcastReceiveronReceive()事件,接收到的Intent.ACTION_BATTERY_CHANGED,包括下面的信息。
    “status”
int类型)状态,定义值是BatteryManager.BATTERY_STATUS_XXX
    “health”
int类型)健康,定义值是BatteryManager.BATTERY_HEALTH_XXX
    “present”
boolean类型)
    “level”
int类型)电池剩余容量
    “scale”
int类型)电池最大值。通常为100
    “icon-small”
int类型)图标ID
    “plugged”
int类型)连接的电源插座,定义值是BatteryManager.BATTERY_PLUGGED_XXX
    “voltage”
int类型)…mV
    “temperature”
int类型)温度,0.1度单位。例如表示197的时候,意思为19.7度。
    “technology”
String类型)电池类型,例如,Li-ion等等。

[java]view plaincopyprint?

1.   package dev.demo.batterytest;  

2.     

3.   import Android.app.Activity;  

4.   import Android.content.BroadcastReceiver;  

5.   import Android.content.Context;  

6.   import Android.content.Intent;  

7.   import Android.content.IntentFilter;  

8.   import Android.os.BatteryManager;  

9.   import Android.os.Bundle;  

10.  import Android.util.Log;  

11.    

12.  public class BatteryTestActivity extends Activity {  

13.  /** Called when the activity is first created. */  

14.  @Override  

15.  public void onCreate(Bundle savedInstanceState) {  

16.  super.onCreate(savedInstanceState);  

17.  setContentView(R.layout.main);   

18.  }  

19.    

20.  @Override  

21.  protected void onResume() {  

22.  super.onResume();  

23.    

24.  IntentFilter filter = new IntentFilter();  

25.    

26.  filter.addAction(Intent.ACTION_BATTERY_CHANGED);  

27.  registerReceiver(mBroadcastReceiver, filter);  

28.  }  

29.    

30.  @Override  

31.  protected void onPause() {  

32.  super.onPause();  

33.    

34.  unregisterReceiver(mBroadcastReceiver);  

35.  }  

36.    

37.  private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {  

38.  @Override  

39.  public void onReceive(Context context, Intent intent) {  

40.  String action = intent.getAction();  

41.  if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {  

42.  int status = intent.getIntExtra("status"0);  

43.  int health = intent.getIntExtra("health"0);  

44.  boolean present = intent.getBooleanExtra("present"false);  

45.  int level = intent.getIntExtra("level"0);  

46.  int scale = intent.getIntExtra("scale"0);  

47.  int icon_small = intent.getIntExtra("icon-small"0);  

48.  int plugged = intent.getIntExtra("plugged"0);  

49.  int voltage = intent.getIntExtra("voltage"0);  

50.  int temperature = intent.getIntExtra("temperature"0);  

51.  String technology = intent.getStringExtra("technology");  

52.    

53.  String statusString = "";  

54.    

55.  switch (status) {  

56.  case BatteryManager.BATTERY_STATUS_UNKNOWN:  

57.  statusString = "unknown";  

58.  break;  

59.  case BatteryManager.BATTERY_STATUS_CHARGING:  

60.  statusString = "charging";  

61.  break;  

62.  case BatteryManager.BATTERY_STATUS_DISCHARGING:  

63.  statusString = "discharging";  

64.  break;  

65.  case BatteryManager.BATTERY_STATUS_NOT_CHARGING:  

66.  statusString = "not charging";  

67.  break;  

68.  case BatteryManager.BATTERY_STATUS_FULL:  

69.  statusString = "full";  

70.  break;  

71.  }  

72.    

73.  String healthString = "";  

74.    

75.  switch (health) {  

76.  case BatteryManager.BATTERY_HEALTH_UNKNOWN:  

77.  healthString = "unknown";  

78.  break;  

79.  case BatteryManager.BATTERY_HEALTH_GOOD:  

80.  healthString = "good";  

81.  break;  

82.  case BatteryManager.BATTERY_HEALTH_OVERHEAT:  

83.  healthString = "overheat";  

84.  break;  

85.  case BatteryManager.BATTERY_HEALTH_DEAD:  

86.  healthString = "dead";  

87.  break;  

88.  case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:  

89.  healthString = "voltage";  

90.  break;  

91.  case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:  

92.  healthString = "unspecified failure";  

93.  break;  

94.  }  

95.    

96.  String acString = "";  

97.    

98.  switch (plugged) {  

99.  case BatteryManager.BATTERY_PLUGGED_AC:  

100.acString = "plugged ac";  

101.break;  

102.case BatteryManager.BATTERY_PLUGGED_USB:  

103.acString = "plugged usb";  

104.break;  

105.}  

106.  

107.Log.v("status", statusString);  

108.Log.v("health", healthString);  

109.Log.v("present", String.valueOf(present));  

110.Log.v("level", String.valueOf(level));  

111.Log.v("scale", String.valueOf(scale));  

112.Log.v("icon_small", String.valueOf(icon_small));  

113.Log.v("plugged", acString);  

114.Log.v("voltage", String.valueOf(voltage));  

115.Log.v("temperature", String.valueOf(temperature));  

116.Log.v("technology", technology);  

117.}  

118.}  

119.};  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android电池信息 的相关文章

  • 2.4.1 C# 和 F# 中的类型推断

    2 4 1 C 和 F 中的类型推断 大多数的类型有简称 例如 int 或 Random 只有很少一部分需要类型推断 因为手写类型名称并不困难 C 2 0 支持泛型 因此 可以构造更复杂的类型 在函数语言中的类型 像 F 是相当复杂的 尤其
  • R语言legend函数参数详解

    legend x y NULL legend fill NULL col par col border black lty lwd pch angle 45 density NULL bty o bg par bg box lwd par
  • Scala学习系列(二)——环境安装配置

    Scala下载地址 https www scala lang org download 一 安装JDK 首先 因为Scala是运行在JVM平台上的 所以安装Scala之前要安装JDK 二 二进制安装方式 我们可以直接用二进制安装Scala
  • 合并BPL包图文教程

    Delphi IDE 本身就是一个插件模式的工具 插件的好处不用多说 运行包的BPL 其实就是众多单元的集合 因此可以再次重新组合 只要你将各个BPL包用到的单元再组合一次 本文以 http code google com p tangra
  • libuv源码分析(1)事件循环分析

    前言 libuv总是报出一些让人难以理解的错误 作为一个C的项目 不具有Java JavaScript php那样的人气 很难百度到一些问题的答案 甚至google也不行 为了用好libuv 也为了学习吧 我开始看libuv的源码 不知道自

随机推荐

  • 【正点原子STM32连载】 第三十一章 睡眠模式实验 摘自【正点原子】APM32F407最小系统板使用指南

    1 实验平台 正点原子stm32f103战舰开发板V4 2 平台购买地址 https detail tmall com item htm id 609294757420 3 全套实验源码 手册 视频下载地址 http www openedv
  • 《机器学习》周志华(西瓜书)学习笔记 第二章 模型评估与选择

    机器学习 周志华 学习笔记 总目录 世上只有一种投资是只赚不赔的 那就是学习 当你的的能力还驾驭不了你的目标时 就应该沉下心来历练 当你的才华撑不起你的野心时 就应该静下心来学习 第二章 模型评估与选择 2 1 经验误差与过拟合 错误率 E
  • 11 【标准库之JSON对象 JSON5】

    13 JSON 对象 13 1 JSON 格式 JSON 格式 JavaScript Object Notation 的缩写 是一种用于数据交换的文本格式 2001年由 Douglas Crockford 提出 目的是取代繁琐笨重的 XML
  • 递归视角下

    def listSum numbers if not numbers return 0 else f rest numbers return f listSum rest myList 1 2 3 4 None total listSum
  • 在存储过程中IN传入参数无效的解决方法

    列 SELECT count COUNT sysid FROM Student WHERE Id IN Sysids 想要得到count 但是在in的时候 传入的参数无效 得到的结果只能为0 这时候可以将其转化成一条变量语句 然后去执行这条
  • websocket即时通讯

    目录 一 websocket简介 二 背景 三 优点 1 控制开销 2 实时性更强 3 保持连接状态 4 更好的二进制支持 5 支持扩展和更好的实现压缩效果 四 原理 1 客户端 服务器建立TCP连接 三次握手 2 TCP连接成功后 客户端
  • PANet[详解]

    一 Abstract摘要 Introduction介绍 Abstract 信息在神经网络中的传播方式非常重要 本文提出了一种基于提议的实例分割框架下的路径聚合网络Path Aggregation Network PANet 旨在促进信息的流
  • SQL Server 2019 Express的安装

    SQL Server 2019 Express的安装 下载安装程序 SQL Server 2019 Express 安装SQL Server 双击运行SQL2019 SSEI Expr exe 运行下载程序 选择自定义 点击安装 稍等几分钟
  • 小程序消息推送配置 Token校验失败,请检查确认

    一 小程序消息推送配置 Token校验失败 请检查确认 添加配置失败 原因 只要是没有echostr原样返回 就会报错 注意 返回的事echostr的内容 而不是key value格式 示例如下 return Content reqData
  • 大数据数据湖技术Hudi0.12.0版本源码编译

    0 介绍 Apache Hudi Hadoop Upserts Delete and Incremental 是下一代流数据湖平台 Apache Hudi将核心仓库和数据库功能直接引入数据湖 Hudi提供了表 事务 高效的upserts d
  • api的封装

    这是以 cnode中文社区的api 为例 值得一提的是有些请求可能要先进行url的编码 这是简易版的 use strict api 路径 get topics 主题首页 get topic id 主题详情 post accesstoken
  • 基于libevent, libuv和android Looper不断演进socket编程

    最近在做websocket porting的工作中 需要实现最底层socket读和写 基于同步读 libevent libuv和android Looper都写了一套 从中体会不少 1 同步阻塞读写 最开始采用同步阻塞读写 主要是为了快速实
  • 织梦网站搬迁后服务器错误,如何解决DEDECMS 5.7 将data目录迁移后网站地图无法打开和更新的问题...

    如何解决DEDECMS 5 7 将data目录迁移后网站地图无法打开和更新的问题 发布时间 2020 09 15 11 53 29 来源 亿速云 阅读 88 作者 小新 这篇文章主要介绍如何解决DEDECMS 5 7 将data目录迁移后网
  • Firefox about:config设置

    以下内容来自于转载 原文 https www jianshu com p 6e6937a9574c 地址栏输入about config 打开 搜索 书签在新标签页中打开 browser tabs loadBookmarksInTabs 默认
  • 安卓开发日志捕获,错误日志捕获catch,崩溃日志捕获,抓取崩溃日志

    import android content Context import android content SharedPreferences import android content pm PackageInfo import and
  • 从街边小吃到网上爆款,螺蛳粉是如何逆袭走红的呢?

    要说现当下最火的食物是什么 那螺蛳粉肯定占有一席之地 喝奶茶已经不是当下年轻人的续命方式了 现在只有会嗦粉的才能称得上是整条街最靓的崽 在今年五花八门的热搜中 可以说螺蛳粉长在了热搜上 从西瓜微数热搜榜来看 关于螺蛳粉的热搜可是数不胜数 在
  • windows系统升级node

    直接去官网下载对应版本的安装包 覆盖到原来的下载路径就可以了 注意一定要下载稳定版本的下载 Node js nodejs org https nodejs org zh cn download 查看node下载路径where node 查看
  • 线程池基础入门

    文章目录 线程池的状态 ThreadPoolExecutor 构造方法 Executors 固定大小的线程池 Executors 定时线程池 Executors 带缓冲线程池 Executors 单线程线程池 线程池常用方法 线程池的状态
  • 对接阿里云弹性收缩小结

    1 垂直伸缩 执行垂直伸缩任务时 系统自动完成停止目标实例 调整实例规格 启动目标实例一系列操作 这个相对简单 直接增加实例配置 2 弹性伸缩 参考 阿里云弹性伸缩初体验 偶影独行的博客 CSDN博客 Sina Visitor System
  • Android电池信息

    Android中电池信息 Battery information 的取得 这里介绍电池信息的取得 Android content BroadcastReceiver类 Android os BatteryManager类 电池信息的取得 调