我想检测每个百分比的电池更换。我能用广播接收器检测一次电池电量。但是当%从66变为67时,它不会自动更新值。
这是我的代码。
private void batteryLevel() {
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
Log.i("Battery CHANGED******",":: IN RECEIVER");
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
btnConsumer.setText("Battery Level Remaining: " + level + "%");
}
};
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
添加了权限
<uses-permission android:name="android.permission.BATTERY_STATS"></uses-permission>
它检测到66但是当它改变65或67时它不会更新值。或者不显示日志
我想让它变得像我可以得到每一个改变。
提前致谢。
答案 0 :(得分:12)
首先,您不需要BATTERY_STATS
权限。
其次,onReceive()
的第一行取消注册您的BroadcastReceiver
,从而阻止您获得任何进一步的更新。
第三,无法保证每次1%的更改都会向您提供电池信息。例如,许多摩托罗拉手机每10%只发送一次ACTION_BATTERY_CHANGED
,直到电池电量不足为止。关于广播ACTION_BATTERY_CHANGED
的频率的决定取决于设备制造商,而不是您。