以编程方式检测电池消耗

时间:2017-05-22 21:01:53

标签: android

我有一些应用程序,用户通常每天花费很长时间,还有一些后台工作,通知,警报等。 我希望确保在添加一些新功能后它不会耗尽太多电池。

是否可以在用户设备上收集我的应用电池使用情况数据?

我知道自从Android 5.1通过ADB添加了一些功能,但是有可能以编程方式进行吗? 也许是一些间接的方式,比如我的应用程序的CPU时间,活动屏幕和wifi使用情况?

1 个答案:

答案 0 :(得分:1)

不像你想要的德普, 事实上,您无法知道哪个应用正在耗尽设备电池,您只能了解有关电池充电状态的详细信息。

BatteryManager以包含充电状态的粘性Intent广播所有电池和充电详细信息。

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

您可以提取当前的充电状态,如果设备正在充电,还可以通过USB或AC充电器进行充电:

// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                     status == BatteryManager.BATTERY_STATUS_FULL;

// How are we charging?
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

此处的所有详细信息:https://developer.android.com/training/monitoring-device-state/battery-monitoring.html