【问题标题】:How is the getBatteryLevel() function implemented on Android?Android上的getBatteryLevel()函数是如何实现的?
【发布时间】:2015-02-18 02:42:02
【问题描述】:

我正在寻找 android 如何与电池通信以及它用于确定电池电量的逻辑的实现。

我不是在寻找如何编写一个给出电池电量的应用程序,我想了解操作系统如何计算电池电量。

我看过了:

BatteryManagerInternal.java
BatteryManager.java
BatteryProperties.java

我看到它正在检索它,但我找不到实际的逻辑,或与电池 PCB 的通信。

感谢您的帮助! 伊丹。

【问题讨论】:

  • Android 文档有一些关于这个主题的非常好的信息。 link

标签: java android operating-system


【解决方案1】:

注意BatteryManagerInternal 是一个抽象类。

在实际的 android 实现中,BatteryManagerInternal 将使用依赖于供应商/模型的类进行子类化,并可能附加到从低级硬件提供功能的本机代码。

android SDK 库本身是一个供软件开发人员编程的 API,它独立于实现,并且在大多数情况下,没有任何较低级别的硬件代码(因为这些代码由 API 的实现者决定) .

如果你看一下ServiceManager的源码,调用就行了:

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

在 BatteryManager 中。您将看到它只是一个仅提供方法签名的虚拟类,没有实际功能。同样,另一个示例将被替换或至少从特定于实现的代码中更改。

【讨论】:

  • @user1050491 您需要找到特定于设备的代码来探索它。刚才我自己在找那个,结果是空的。
  • 我也很感兴趣,这通常是如何工作的。通过 BLE?还是 HFP?
猜你喜欢
  • 2015-06-02
  • 2021-01-10
  • 1970-01-01
  • 2020-04-10
  • 2012-01-18
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多