You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为无电池设备配置Android AOSP 6(Marshmallow)

解决AOSP 6无电池设备的充电/电量指示器隐藏问题

针对你这种用于工业部署、无内置电池的类平板设备(基于Android Marshmallow 6.0),要让系统正确识别无电池状态并移除充电指示器和0%电量显示,主要需要从硬件配置声明系统UI定制两个方向入手,下面是具体可落地的修改步骤:

一、告知系统无电池:修改硬件配置

这一步是核心,让Android底层服务跳过电池状态的检测和上报:

  • 修改设备专属配置文件:在device/<你的厂商名>/<设备型号>/device.mk(或BoardConfig.mk)中添加宏定义:
    BOARD_HAS_NO_BATTERY := true
    
    这个宏会被系统服务读取,直接标记设备无内置电池,电池相关的底层逻辑会被跳过。
  • 内核设备树(Device Tree)调整:如果你的设备使用DT来定义硬件,找到对应设备树的.dts文件,定位到battery节点,要么直接删除该节点,要么添加status = "disabled";属性,让内核不再枚举电池硬件。

二、移除UI层的电量/充电显示

即使底层识别了无电池,部分系统UI可能还会残留默认显示,需要针对性修改:

  • 全局关闭电量显示:打开frameworks/base/core/res/res/values/config.xml,找到以下配置项并修改:
    <bool name="config_showBatteryLevel">false</bool>
    <bool name="config_showChargingIndicator">false</bool>
    
  • 定制SystemUI状态栏:进入frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java,找到updateBattery()方法,添加判断逻辑——当系统检测到无电池时(可通过BatteryManager的状态或读取BOARD_HAS_NO_BATTERY宏),隐藏电量图标和充电状态View。
  • 锁屏界面清理:打开frameworks/base/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardStatusView.java,同样添加判断,隐藏锁屏上的电量显示控件。

三、额外验证与补充

  • 编译前可通过模拟器测试:在模拟器的设备配置中添加BOARD_HAS_NO_BATTERY := true,确认系统是否会自动隐藏电量UI,提前验证逻辑有效性。
  • 检查电池驱动:如果设备有自定义的电池驱动(路径一般为kernel/drivers/power/supply/),确保驱动不会强制上报电池状态,必要时注释掉相关的状态上报代码。
  • 编译后验证:烧录系统后,通过adb shell dumpsys battery命令查看电池状态,确认输出中显示设备无电池;同时检查状态栏、锁屏是否还有残留的充电/电量元素。

内容的提问来源于stack exchange,提问作者jdm

火山引擎 最新活动