美文网首页Android开发文档翻译
Android无电池设备支持

Android无电池设备支持

作者: ben3726 | 来源:发表于2018-08-22 15:55 被阅读11次

原文:https://source.android.com/devices/tech/power/batteryless

此页面描述了Android如何处理具有可拆卸电池或无内置电池的产品。后一种设备可以连接到一个外部电源,如另一设备上的AC电源插座或USB端口。

电池是否存在?

应用程序可以使用以下代码来检测设备当前是否有电池:

final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);

无电池设备行为

如果Android未检测到产品的电池设备,则会使用以下与电池相关的默认值。
注意,Android 9版本中的默认值已更改。此表显示了差异。

电池状态 Android 9及更高版本 Android 8.1及更低版本
Present false true
Status unknown charging
Remaining capacity 0 100%
Health unknown good
AC charger online status not modified forced to true

制造商可以使用内核驱动程序power_supplyHealth HAL更改默认设置 。

Android 9及更高版本

Android 9删除了一些以前的无电池设备代码:默认假设电池存在,充电率为100%,并且热敏电阻的正常温度读数状况良好。

处理此信息的大部分Framework API继续处理与以前相同的常见情况:系统将被视为正在 充电(即,不使用电池供电),并且不会被视为电池电量不足。如果用户界面绘制电池图标,它将显示一个感叹号,电池百分比将显示为0%。但设备不会因电池电量不足而关闭,且需要充电或电池电量良好的作业仍会被安排。

Android 8.1及更低版本

由于电池状态未知,Android Framework API将认为系统正在充电(或者不使用电池供电)并且不会被视为电池电量不足。如果用户界面呈现电池图标,则会显示感叹号,电池百分比将显示为0%。但设备不会因电池电量不足而关闭,且需要充电或电池电量良好的作业仍会被安排。

实现

Android 9默认代码可能适用于您的设备,但建议进行内核或HAL更改,以准确反映产品的电源和电池状态,如上所述。如果Android 9及更高版本未检测到一个Linux电源支持类 的充电设备,则默认所有充电类型(AC,USB,无线)都将处于离线状态。如果所有充电器都处于离线状态但没有检测到电池设备,则系统仍将被视为正在充电,因为它在外部运行,无电池供电,如前所述。

如果您的产品没有电池且始终连接到电源,则最好为AC或USB电源实现一个Linux内核power_supply类充电驱动程序, 将其在线属性sysfs设置为true。或者,您可以在设备的Health HAL中配置AC充电器的在线属性。实现Health HAL详见Health 2.0实现

此Health HAL的客制化实现了一个Health::getHealthInfo() 的自定义版本,修改了BatteryProperties.chargerAcOnline = true的值。

首先,将 hardware/interfaces/health/2.0/default/Health.cpp文件复制到您自己的Health HAL实现里,并根据Health 2.0 README进行修改。

相关文章

网友评论

    本文标题:Android无电池设备支持

    本文链接:https://www.haomeiwen.com/subject/bgcyiftx.html