2015-02-18 3 views
-1

Я ищу реализацию того, как Android поддерживает связь с батареей, и логику, используемую для определения уровня заряда батареи.Как функция getBatteryLevel() реализована на Android?

Я не ищу, как написать приложение, которое дает уровень заряда батареи. Я ищу, чтобы понять, как os рассчитывает уровень заряда батареи для начала.

Я посмотрел:

BatteryManagerInternal.java 
BatteryManager.java 
BatteryProperties.java 

и я вижу, что это извлечение, но я не могу найти реальную логику, или связь с батареи на печатной плате.

Благодарим за помощь! Идан.

+1

В документации для Android имеется довольно хорошая информация по этому вопросу. [link] (http://developer.android.com/training/monitoring-device-state/battery-monitoring.html) – WoogieNoogie

ответ

1

Отметьте, что BatteryManagerInternal является абстрактным классом.

В реальных реализациях Android BatteryManagerInternal будет подклассифицирован классом, зависящим от поставщика/модели, с возможными вложениями в собственный код, обеспечивающий функциональность от низкоуровневого оборудования.

Андроидная SDK-библиотека сама по себе является API-интерфейсом для разработчиков программного обеспечения, который не зависит от реализации и, по большей части, свободен от любого аппаратного кода более низкого уровня (поскольку они остаются за разработчиками API).

Если вы посмотрите на источник ServiceManager, который был назван на линии:

IBinder b = ServiceManager.getService("batteryproperties"); 

в BatteryManager. Вы увидите его просто фиктивный класс, предоставляющий сигнатуры методов только без фактической функциональности. Опять же, еще один пример того, что будет заменено или, по крайней мере, изменено от кода, специфичного для реализации.

+0

Как добраться до кода аппаратного обеспечения нижнего уровня? – user1050491

+0

@ user1050491 Вам нужно будет найти код, специфичный для устройства, чтобы изучить это. Я уже сам это искал, подошел пустой. – initramfs

Смежные вопросы