Поддержка безбатарейных устройств

На этой странице описывается, как Android обращается с продуктами, у которых есть съемные батареи или нет внутренних батарей. Последние устройства вместо этого подключаются к внешнему источнику питания, например к розетке переменного тока или 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 и ниже
Подарок ложный правда
Положение дел неизвестный зарядка
Оставшаяся емкость 0 100%
Здоровье неизвестный хороший
Состояние сетевого зарядного устройства переменного тока не изменено вынужден быть правдой

Производители могут изменить параметры по умолчанию , используя ядро power_supply драйвер или здоровье HAL .

Android 9 и выше

Android 9 удаляет некоторый предыдущий код для безбатарейных устройств, которые по умолчанию притворяются, что батарея присутствует, заряжается на 100% и находится в хорошем состоянии с нормальным показанием температуры на термисторе.

Большинство рамочного API , которые имеют дело с этой информацией продолжает обрабатывать общие ситуации же , как и ранее: система будет считаться зарядками (то есть, не работает от батареи), и не будет рассматриваться , чтобы иметь низкий уровень заряда батареи. Если в пользовательском интерфейсе отображается значок батареи, он отображается с восклицательным знаком, а процент заряда батареи отображается как 0%. Но устройство не выключится из-за низкого заряда аккумулятора, и будут запланированы работы, требующие зарядки или исправного аккумулятора.

Android 8.1 и ниже

Поскольку состояние батареи неизвестно, то Android рамочные API , рассмотрит систему , чтобы заряжаться (или не работает от батареи) и рассматриваться не будет иметь низкий уровень заряда батареи. Если пользовательский интерфейс отображает значок батареи, он будет отображаться с восклицательным знаком, а процент заряда батареи будет отображаться как 0%. Но устройство не выключится из-за низкого заряда аккумулятора, и будут запланированы работы, требующие зарядки или исправного аккумулятора.

Реализация

Код по умолчанию Android 9 может работать на вашем устройстве должным образом, но рекомендуется внести изменения в ядро ​​или HAL, чтобы точно отразить состояние питания и батареи для вашего продукта, как описано выше. Если Android 9 и выше не обнаруживает питания класса Linux зарядное устройство, то по умолчанию все типы зарядных (AC, USB, Wireless) будет иметь статус в автономном режиме. Если все зарядные устройства отключены, но аккумуляторное устройство не обнаружено, система все равно будет считаться заряжающейся в том смысле, что она работает от внешнего источника, а не от аккумулятора, как описано ранее.

Если ваш продукт не имеет батарею и всегда подключен к источнику питания, то лучше реализовать Linux Kernel power_supply драйвер класса зарядное устройство для сети переменного тока или источника питания USB , который устанавливает свой онлайн sysfs атрибут true . Или вы можете настроить онлайн-свойство зарядного устройства переменного тока в Health HAL для вашего устройства. Для того, чтобы сделать это осуществить здоровье HAL , как описано в осуществлении здравоохранения 2.0 .

Этот обычай здравоохранения HAL реализует собственную версию Health::getHealthInfo() , который изменяет значение BatteryProperties.chargerAcOnline = true .

Для начала копирования файлов hardware/interfaces/health/2.0/default/Health.cpp по hardware/interfaces/health/2.0/default/Health.cpp к вашей собственной реализации здравоохранения HAL и изменить его в соответствии с 2.0 README здравоохранения .