Android API如何获得电池百分比



我正在研究Android中的能源。当我需要通过Android系统的百分比来了解当前的充电状态时,我运行以下功能:

public float getBatteryLevel() {
    Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
    return ((float)level / (float)scale) * 100.0f; 
}

但我不知道Android API是如何知道电池的当前充电状态并得出结果的?我四处研究,知道一些电池测量方法,例如:

  • 电压和充电状态之间的关系:http://www.powerstream.com/lithium-ion-charge-voltage.htm

  • 库仑计数

安卓API是否使用上述任何方法?还是其他方法?

我知道操作系统获取电池(和其他电源)信息的三种主要方式。

  • /proc-这些文件直接绑定到各种操作系统和硬件表。当您访问这些文件时,实际上是在向操作系统查询这些表的值。不幸的是,它非常依赖于系统,因为它依赖于内核实现
  • PAPI(性能API)-这些旨在解决获取性能信息缺乏标准化的问题。虽然有一个Java实现,但我没有发现任何东西告诉我有一个android实现
  • ACPI表格-用于保存信息的标准操作系统表格。我发现他们比我想要的更依赖平台

访问该信息的另一种方式是直接从硬件本身访问。正如你所猜测的,这是非常依赖于平台的。它因体系结构而异,甚至包括同一体系结构的不同版本。

关于高级API的另一个注意事项,如PAPI、ACPI表和/proc。即使存在信息,它们也可以查询硬件,也可以不查询硬件。这完全取决于内核和API开发人员是如何实现的。

相关内容

  • 没有找到相关文章

最新更新