我正在使用ACTION_BATTERY_CHANGED
意图过滤器来接收来自 android 的广播消息。
我正在使用以下代码
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(batteryLevelReceiver, batteryLevelFilter);
BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
Log.e(TAG,String.valueOf(status));
Toast.makeText(MainActivity.this, String.valueOf(status), Toast.LENGTH_SHORT).show();
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
float battPct = (level/(float)scale) * 100;
txtBatteryPercentage.setText(String.valueOf(battPct));
txtBatteryStatus.setText(String.valueOf(isCharging));
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
}else {
mediaPlayer.seekTo(0);
mediaPlayer.start();
}
}
};
在这里,我按照 android 官方文档中的说明检查电池充电状态。
当我在充电模式下运行应用程序时,它给我EXTRA_STATUS
的值为 2 即BATTERY_STATUS_CHARGING
预期的值。但是,当断开充电器与设备的连接并从 android 获得另一个广播时,它仍然向我发送与充电相同的状态。预计会向我发送 status BATTERY_STATUS_NOT_CHARGING
。
为什么它在发送更新的广播时不更新状态?