gpt4 book ai didi

android - 在广播接收器响应 Intent.ACTION_BATTERY_CHANGED 之前获取电池电量

转载 作者:IT王子 更新时间:2023-10-28 23:58:03 30 4
gpt4 key购买 nike

我的程序中有一个广播接收器,可以像这样对电池电量使用react:

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int level = intent.getIntExtra("level", 0);
// do something...
}
}

registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

但是,此代码必须等待电池状态更新,因此如果您有一个需要根据电池电量设置的 GUI 元素,则它必须等待电池事件发生。有没有办法插入它使其正常工作,或者只是运行一些代码来查看上次广播时的电池电量?

最佳答案

这是在不注册接收器的情况下获取电池电量的方法:

Intent batteryIntent = context.getApplicationContext().registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int rawlevel = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
double scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
double level = -1;
if (rawlevel >= 0 && scale > 0) {
level = rawlevel / scale;
}

由于广播的粘性,它可以使用 null BroadcastReceiver。

它使用 getApplicationContext() 技巧,以防您在 Intent 接收器中并获得异常:

android.content.ReceiverCallNotAllowedException: IntentReceiver components are not allowed to register to receive intents

关于android - 在广播接收器响应 Intent.ACTION_BATTERY_CHANGED 之前获取电池电量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661464/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com