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

dumpsys battery 简介

一. dump 代码位置

frameworks/base/services/core/java/com/android/server/BatteryService.java

    public void onStart() {
...
mBinderService = new BinderService();
publishBinderService("battery", mBinderService);
...
}


private final class BinderService extends Binder {
@Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;

            if (args.length > 0 && "--proto".equals(args[0])) {
dumpProto(fd);
} else {
dumpInternal(fd, pw, args);
}
}

        @Override public void onShellCommand(FileDescriptor in, FileDescriptor out,
FileDescriptor err, String[] args, ShellCallback callback,
ResultReceiver resultReceiver) {
(new Shell()).exec(this, in, out, err, args, callback, resultReceiver);
}
}


private void dumpInternal(FileDescriptor fd, PrintWriter pw, String[] args) {
synchronized (mLock) {
if (args == null || args.length == 0 || "-a".equals(args[0])) {
pw.println("Current Battery Service state:");
if (mUpdatesStopped) {
pw.println("  (UPDATES STOPPED -- use 'reset' to restart)");
}
pw.println("  AC powered: " + mHealthInfo.chargerAcOnline);
pw.println("  USB powered: " + mHealthInfo.chargerUsbOnline);
pw.println("  Wireless powered: " + mHealthInfo.chargerWirelessOnline);
pw.println("  Dock powered: " + mHealthInfo.chargerDockOnline);
pw.println("  Max charging current: " + mHealthInfo.maxChargingCurrentMicroamps);
pw.println("  Max charging voltage: " + mHealthInfo.maxChargingVoltageMicrovolts);
pw.println("  Charge counter: " + mHealthInfo.batteryChargeCounterUah);
pw.println("  status: " + mHealthInfo.batteryStatus);
pw.println("  health: " + mHealthInfo.batteryHealth);
pw.println("  present: " + mHealthInfo.batteryPresent);
pw.println("  level: " + mHealthInfo.batteryLevel);
pw.println("  scale: " + BATTERY_SCALE);
pw.println("  voltage: " + mHealthInfo.batteryVoltageMillivolts);
pw.println("  temperature: " + mHealthInfo.batteryTemperatureTenthsCelsius);
pw.println("  technology: " + mHealthInfo.batteryTechnology);
pw.println("  Charging state: " + mHealthInfo.chargingState);
pw.println("  Charging policy: " + mHealthInfo.chargingPolicy);
} else {
Shell shell = new Shell();
shell.exec(mBinderService, null, fd, null, args, null, new ResultReceiver(null));
}
}
}

二. dump 内容解析
Current Battery Service state:

  //Ac: 交流电,墙上的插头充电器,通常支持更高的功率(快充)。

  // false: 表示不是快充.

  //代码:mHealthInfo.chargerAcOnline

  AC powered: false

  //设备是否正在通过 USB 电源充电,true 表示是.

  //代码:mHealthInfo.chargerUsbOnline
USB powered: true

  //设备是否进行无线充电,false: 表示没有无线充电.

  //代码:mHealthInfo.chargerWirelessOnline
Wireless powered: false

  //设备是否底座充电 ,false:表示没有底座充电

  //代码:mHealthInfo.chargerDockOnline
Dock powered: false

  //最大充电电流:500000 μA

  //代码:mHealthInfo.maxChargingCurrentMicroamps
Max charging current: 500000

   //最大充电电压:5000000 μV

  //代码:mHealthInfo.maxChargingVoltageMicrovolts
Max charging voltage: 5000000

  //电荷计数器:4017000 μAh

  //代码:mHealthInfo.batteryChargeCounterUah
Charge counter: 4017000

 //电池状态:充满。
//常见状态代码:
//2 = BATTERY_STATUS_FULL (已充满)
//3 = 放电中
//5 = 充电中

  //代码:mHealthInfo.batteryStatus
status: 2

  //电池健康状态:良好。
//常见健康代码:
  //2 = BATTERY_HEALTH_GOOD (良好)

  //代码:mHealthInfo.batteryHealth

  //健康度:2
health: 2

  //检测到电池存在

  //代码:mHealthInfo.batteryPresent
present: true

 //当前电池剩余电量为 100%。

  //代码:mHealthInfo.batteryLevel
level: 100

  //电量百分比的最大值为 100(这是标准值)。

  //代码:BATTERY_SCALE

  //private static final int BATTERY_SCALE = 100;    // battery capacity is a percentage
scale: 100

   //代码:mHealthInfo.batteryVoltageMillivolts

   //电压:4364 mV
voltage: 4364

  //电池当前温度为 27.0°C

   //代码:mHealthInfo.batteryTemperatureTenthsCelsius
temperature: 270

   //电池类型为锂离子电池。

   //代码:mHealthInfo.batteryTechnology
technology: Li-ion

   //充电状态:0

   //当前未在充电(因为电池已满,停止充电)。
这个字段是硬件层面的状态,与 status 字段相关联。因为已充满,所以充电回路已断开。

   //代码: mHealthInfo.chargingState
Charging state: 0

  //充电策略:0
//充电策略:自适应。
//通常 0 表示系统自适应的常规充电模式(与 1 的“强制慢充”等模式相对)。

   //代码:mHealthInfo.chargingPolicy
Charging policy: 0

http://www.dtcms.com/a/391680.html

相关文章:

  • 从 CNN 基础到 AlexNet:计算机视觉的破局之路
  • 苏州自动化工厂1台服务器如何5人并发SolidWorks设计
  • 固态硬盘数据恢复一般多少钱?费用分析+恢复教程
  • WebRTC 探秘:构建你自己的实时视频应用
  • 在Ubuntu中离线安装miniconda3
  • Mem0 + 百度智能云向量数据库:为AI打造持久化记忆
  • MySQL 数据归档的技术困境与 Databend 解决之道
  • 2025icpc网络赛第一场The 2025 ICPC Asia East Continent Online Contest (I)
  • docker中ngnix的路径配置
  • 什么是黑板架构风格?
  • Redis 三大核心模式(主从复制 / 哨兵 / 集群):完整部署与问题解析
  • Docker生产环境容器OOM问题定位:镜像内存泄漏还是主机资源不足?
  • AcWing385. GF和猫咪的玩具——Floyd算法
  • 75、封装paddle ocr v5服务支持昇腾800 900 、800I A2、300I DUO卡推理识别
  • 【一文了解】线程的使用
  • 电力系统暂态稳定计算与单机无穷大系统建模
  • OmniGen2 - 智源研究院推出的开源多模态生成模型
  • 【故障排查:JDK8中Files.lines方法错误使用导致的Linux服务器文件描述符泄漏问题】
  • 【multisim仿真电子秒表74LS90】2022-12-15
  • v-show 和 v-if 的区别及使用场景
  • 动态二维码杜绝代签,手机端配置同步,巡检数据更可靠
  • 数据库学习MySQL系列6、MySQL入门简单练习使用
  • 交互式生成对抗网络(iGAN)
  • RecSys: 推荐系统重排与多样性优化(MMR以及DPP算法)
  • 瑞芯微MPP音视频框架---mjpeg解码
  • 模型部署:(七)安卓端部署OCR文本识别项目全流程记录
  • 用html5写一个超级计算器
  • 手机实现真随机数生成器
  • 119.计数器产生中断(上升沿)计算方法,比如cnt[21:0],那么assign time = cnt[20]这样大致是多长时间产生一次中断
  • VSCode c/c++头文件函数点击无法跳转问题