当前位置: 首页 > news >正文

Android 获取当前电池状态

在 API 级别 23+ 上获取充电状态
要在 API 级别 23+ 上获取电池的当前状态,只需使用电池管理器系统服务:

BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
boolean isCharging = batteryManager.isCharging();

使用 Sticky Intent 获取充电状态
对于 Android 23+ 之前的 API,你需要使用 Sticky Intent 获取电池状态。正如之前看到的,正常的广播 Intent 将被广播,可能被 Intent 过滤器截获,然后被处理后就消失了。Sticky Intent 是一个不会消失的广播 Intent,使你的应用能够随时访问它,并从广播的 Intent 中获取信息。在 Android 中,当前电池状态保存在 Sticky Intent 中。

对于 Sticky Intent,你不需要使用广播接收器,但是你会使用类似的查找代码来注册接收器:

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

注意 registerReceiver 是如何使用的,传入的是 null,而不是广播接收器。这里的 Intent 过滤器是 Sticky Intent Intent.ACTION_BATTERY_CHANGED 的 Intent 过滤器。registerReceiver 方法将返回 Intent,其中包含所有的电池信息,你可以使用这些信息:

boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;

要详细了解如何获取电池信息,请参阅监控电池电量和充电状态文档(opens in a new tab)。

现在你已经知道如何获取电池状态,你应该能够完成以下练习并修正该 bug 了。代码如下所示。

**注意:**如果你要查看用户使用的是否是 API 23+,可以使用以下代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
http://www.lryc.cn/news/393757.html

相关文章:

  • 【JVM 的内存模型】
  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01—短信/邮件/异常/MD5
  • geom buffer制作
  • 微软正在放弃React
  • U盘非安全退出后的格式化危机与高效恢复策略
  • 安卓虚拟位置修改
  • 大数据面试题之Presto[Trino](5)
  • 对编程开发人员在今年的一些建议
  • VSCode设置好看清晰的字体!中文用鸿蒙,英文用Jetbrains Mono
  • SpringBoot新手快速入门系列教程四:创建第一个SringBoot的API
  • 第1集《修习止观坐禅法要》
  • markdown变量引用
  • 如何使用echart做K线图
  • Spring Boot应用使用GraalVM本地编译相关配置
  • 代码的坏味道——长函数
  • 【机器学习】基于密度的聚类算法:DBSCAN详解
  • Qt 网络编程 网络信息获取操作
  • linux中的进程以及进程管理
  • pyecharts可视化案例大全(11~20)
  • Docker在人工智能领域的应用与实战
  • python基础篇(8):异常处理
  • FortiClient 用IPsec VPN 远程拨号到FortiGate说明文档
  • Git-Unity项目版本管理
  • 每日一题~ leetcode 402 (贪心+单调栈)
  • 设计模式之模版方法
  • docker部署redis/mongodb/
  • LeetCode 581. 最短无序连续子数组
  • 数据库可视化管理工具dbeaver试用及问题处理。
  • 29、php实现和为S的两个数字(含源码)
  • Spring Boot中的全局异常处理