对于我的Android应用程序,我需要监控运行应用程序的所有手机的电池消耗。在应用程序中,需要一个按钮来启动监控并停止监控,在监控停止后,电池监控输出应保存为手机本身的txt。我已经看了一下batterystats,但根据文档,监控过程是通过将设备连接到PC,以及监控重新连接设备并进行转储后启动的。
那么可以在不连接计算机的情况下启动和停止监控并将输出保存在手机本地吗?
答案 0 :(得分:1)
当有变化时,您可以使用广播接收器接收有关电池的信息。
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent intent) {
mLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, Const.VALUE_UNSET);
mTemperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, Const.VALUE_UNSET);
mStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, Const.VALUE_UNSET);
mPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, Const.VALUE_UNSET);
mScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, Const.VALUE_UNSET);
mHealth = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, Const.VALUE_UNSET);
mVoltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, Const.VALUE_UNSET);
mTechnology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
}
不要忘记(取消)在您的活动(或服务,如果它应该在后台运行)中注册接收者。
注册(onCreate / onStart ...):
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
取消注册(onPause / onDestory):
unregisterReceiver(...)
写入文件不应该太难,只需在此处搜索并且不要忘记设置权限(也用于处理文件):
<uses-permission android:name="android.permission.BATTERY_STATS"/>