1

我正在使用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

为什么它在发送更新的广播时不更新状态?

4

0 回答 0