我有一些应用程序,用户通常每天花费很长时间,还有一些后台工作,通知,警报等。 我希望确保在添加一些新功能后它不会耗尽太多电池。
是否可以在用户设备上收集我的应用电池使用情况数据?
我知道自从Android 5.1通过ADB添加了一些功能,但是有可能以编程方式进行吗? 也许是一些间接的方式,比如我的应用程序的CPU时间,活动屏幕和wifi使用情况?
答案 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