На этой странице описывается, как Android работает с продуктами со съемными батареями или без внутренних батарей. Последние устройства вместо этого подключаются к внешнему источнику питания, например к розетке переменного тока или порту USB на другом устройстве.
Есть ли аккумулятор?
Следующий код может использоваться приложениями для определения наличия в устройстве аккумулятора:
```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```
Поведение безбатарейного устройства
Если Android не обнаруживает устройство с аккумулятором для вашего продукта, используются следующие значения по умолчанию, связанные с аккумулятором. Обратите внимание, что настройки по умолчанию изменились в версии Android 9. В этой таблице показаны различия.
Состояние батареи | Андроид 9 и выше | Android 8.1 и ниже |
---|---|---|
Подарок | ЛОЖЬ | истинный |
Статус | неизвестный | зарядка |
Оставшаяся емкость | 0 | 100% |
Здоровье | неизвестный | хороший |
Онлайн-статус зарядного устройства переменного тока | не изменен | вынужден быть правдой |
Производители могут изменить настройки по умолчанию, используя драйвер power_supply ядра или Health HAL .
Андроид 9 и выше
В Android 9 удалены некоторые предыдущие коды для устройств без батареи, которые по умолчанию притворялись, что батарея присутствует, заряжается на 100% и находится в хорошем состоянии с нормальными показаниями температуры на термисторе.
Большинство API-интерфейсов платформы, которые обрабатывают эту информацию, продолжают обрабатывать распространенные ситуации так же, как и раньше: считается, что система заряжается (то есть не работает от аккумулятора) и не считается, что у нее разряжен аккумулятор. Если в пользовательском интерфейсе отображается значок батареи, он отображается с восклицательным знаком, а процент заряда батареи отображается как 0%. Но устройство не выключается из-за низкого заряда батареи, и запланированы задания, требующие зарядки или хорошего заряда батареи.
Android 8.1 и ниже
Поскольку состояние батареи неизвестно, API-интерфейсы платформы Android будут считать, что система заряжается (или не работает от батареи), и не будет считаться, что батарея разряжена. Если пользовательский интерфейс отображает значок батареи, он будет отображаться с восклицательным знаком, а процент заряда батареи будет отображаться как 0%. Но устройство не выключается из-за низкого заряда батареи, и запланированы задания, требующие зарядки или хорошего заряда батареи.
Выполнение
Код по умолчанию Android 9 может работать правильно для вашего устройства, но рекомендуется внести изменения либо в ядро, либо в HAL, чтобы точно отразить состояние питания и батареи вашего продукта, как описано выше. Если Android 9 и выше не обнаруживает зарядное устройство класса питания Linux , то по умолчанию все типы зарядных устройств (переменный ток, USB, беспроводное соединение) будут иметь статус «Не в сети» . Если все зарядные устройства отключены от сети, но аккумуляторное устройство не обнаружено, система все равно будет считаться заряжающейся в том смысле, что она работает от внешнего источника питания, а не от аккумулятора, как описано ранее.
Если ваш продукт не имеет аккумулятора и всегда подключен к источнику питания, лучше всего реализовать драйвер зарядного устройства класса power_supply ядра Linux для источника питания переменного тока или USB, который устанавливает для его онлайн- атрибута sysfs
значение true
. Или вы можете настроить онлайн-свойство зарядного устройства переменного тока в HAL Health для вашего устройства. Для этого реализуйте Health HAL, как описано в разделе «Реализация Health 2.0» .
Этот пользовательский HAL Health реализует пользовательскую версию Health::getHealthInfo()
, которая изменяет значение BatteryProperties.chargerAcOnline = true
.
Для начала скопируйте файл hardware/interfaces/health/2.0/default/Health.cpp
в свою собственную реализацию Health HAL и измените его в соответствии с файлом README Health 2.0 .