前言
此篇博客讲解电池与电量的开发
代码部分
电量监听
private fun initBatteryReceiver() { mBatteryReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { //电压 val voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); mBinding.voltage.text = "电压:" + voltage / 1000 + "." + voltage % 1000 + "V" //温度 val temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); mBinding.temperature.text = "温度:" + temperature / 10 + "." + temperature % 10 + "℃" if (temperature >= 300) { mBinding.temperature.setTextColor(Color.RED) } else { mBinding.temperature.setTextColor(Color.BLUE) } //电量 val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0); val levelPercent = ((level / scale) * 100) mBinding.electricity.setText("电量:" + levelPercent + "%") if (level <= 10) { mBinding.electricity.setTextColor(Color.RED); } else { mBinding.electricity.setTextColor(Color.BLUE); } //充电状态 val status = intent.getIntExtra( BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN ) val strStatus = when (status) { BatteryManager.BATTERY_STATUS_CHARGING -> "充电中" BatteryManager.BATTERY_STATUS_DISCHARGING -> "放电中" BatteryManager.BATTERY_STATUS_NOT_CHARGING -> "未充电" BatteryManager.BATTERY_STATUS_FULL -> "充电完成" else -> "未知状态" } mBinding.status.text = "状态:" + strStatus val health = intent.getIntExtra( BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN ) mBinding.healthStatus.text = when (health) { BatteryManager.BATTERY_HEALTH_GOOD -> "健康状况:好" BatteryManager.BATTERY_HEALTH_OVERHEAT -> "健康状况:过热" BatteryManager.BATTERY_HEALTH_DEAD -> "健康状况:良好" BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE -> "健康状况:电压过高" BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE -> "健康状况:未知" BatteryManager.BATTERY_HEALTH_COLD -> "健康状况:过冷" else -> "健康状况:未知" } val technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); mBinding.batteryTechnology.text = "电池技术:" + technology; } } registerReceiver(this.mBatteryReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) }
adb命令部分
adb命令:adb shell dumpsys battery
得到信息如下:
AC powered: false USB powered: true Wireless powered: false status: 1 #电池状态:2:充电状态 ,其他数字为非充电状态 health: 2 present: true level: 55 #电量: 百分比 scale: 100 voltage: 3977 current now: -335232 temperature: 335 #电池状态 technology: Li-poly
改变手机电池状态
手机连接到电脑,默认为充电状态
切换手机电池为非充电状态:
adb shell dumpsys battery set status 1
改变手机电量
让手机电量显示百分百:
adb shell dumpsys battery set level 100
让手机电量显示1:
adb shell dumpsys battery set level 1
获取电量消耗信息
获取整个设备的电量消耗信息:
adb shell dumpsys batterystats | more
adb shell dumpsys batterystats com.Package.name | more
Battery History:
-d04h22m36s181ms 044 20080000 status=charging health=good plug=usb temp=335 volt=3809 +plugged +sensor
-d04h21m27s713ms 044 40a0000 +wifi +wifi_running +wake_lock
-d04h21m23s278ms 044 c0a0100 +phone_scanning phone_state=out
-d04h21m19s102ms 044 c0a0100 -wake_lock
-d04h21m05s005ms 044 c0a0100 +wake_lock
-d04h20m51s486ms 044 d0a0100 +wifi_scan
-d04h20m49s211ms 044 c0a0100 -wifi_scan
-d04h20m41s478ms 044 c0a0100
-d04h20m31s476ms 044 d0a0100 +wifi_scan
-d04h20m29s174ms 044 c0a0100 -wifi_scan
-d04h20m24s353ms 044 c0a0100 -wake_lock
-d04h20m21s474ms 044 d0a0100 +wifi_scan +wake_lock
-d04h20m21s125ms 044 d0a0100
-d04h20m16s847ms 044 c0a0100 -wifi_scan -wake_lock
第三方项目
电量消耗信息
关于电量,主要是通过battery-historian工具来获取。
https://github.com/google/battery-historian
end
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/9708654.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具