【问题标题】:How to test battery charging speed?如何测试电池充电速度?
【发布时间】:2016-08-12 07:44:40
【问题描述】:

如何在安卓设备中检测电池充电速度? 我可以使用以下代码检测电池状态。但不是充电速度。

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
BatteryChangeReceiver receiver = new BatteryChangeReceiver(subscriber);
registerReceiver(receiver, filter);


public class BatteryChangeReceiver extends BroadcastReceiver {

    @Override public void onReceive(Context context, Intent intent) {
              // here I get all battery status.
    }
  }

我也参考了this,thisthis,但找不到检查充电速度的方法。

有一个显示充电速度的应用程序 (Ampere)。 我怎样才能做到这一点?

提前致谢。

【问题讨论】:

  • 做一个时间和收费百分比的组合。
  • 不,只要我连接到充电器就会显示。如果我连接到 USB 数据线,则显示慢速充电,如果是壁式充电器和快速充电。
  • 我想你可以在设备的dmesg日志中找到。
  • 我添加了另外两张截图。

标签: android usb battery sysfs batterymanager


【解决方案1】:

使用BatteryManager。它提供了属性BATTERY_PROPERTY_CURRENT_AVERAGE,它为您提供了以微安为单位的平均电池电流。不幸的是,收集此信息的时间段可能因设备而异。负值表示正在放电,正值表示手机正在充电。

或者,您可以使用BATTERY_PROPERTY_CURRENT_NOW(看起来Ampere 正在使用这种方法)。它返回瞬时电池电流。它可能不准确,因此多次调用此属性并计算平均值似乎是个好主意。

示例代码:

BatteryManager batteryManager = (BatteryManager) Context.getSystemService(Context.BATTERY_SERVICE);
int averageCurrent = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE);

【讨论】:

  • API 21 中添加的,能否提供低版本也可以的解决方案?
  • 只有具有电池电量表 (source.android.com/devices/tech/power/device.html) 的手机才能报告 BATTERY_PROPERTY_CURRENT_AVERAGE。例如,Nexus 5 只能为您提供 BATTERY_PROPERTY_CAPACITY。
【解决方案2】:

我认为他们无法检测充电速度: 但是你可以这样做有问题: 1)您可以通过

记录收费水平(百分比或数字)

int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); batteryTxt.setText(String.valueOf(level) + "%");

2) 然后经过一些处理时间后,您可以使用相同的代码再次获得当前的收费水平。 3)然后计算差值,就可以知道充电速度了。

这只是你如何实现它的想法。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2011-06-06
    • 2011-07-29
    • 2019-03-15
    • 1970-01-01
    • 2012-02-02
    • 2021-04-14
    相关资源
    最近更新 更多