This question already has answers here:
Get battery level before broadcast receiver responds for Intent.ACTION_BATTERY_CHANGED
(6个答案)
7年前关闭。
我在网上搜索上找不到答案,我的问题。我的问题是让电池电量信息只有一次,如。调用函数
更多的数据可以从这个粘广播拉动。使用返回
(6个答案)
7年前关闭。
我在网上搜索上找不到答案,我的问题。我的问题是让电池电量信息只有一次,如。调用函数
getBatteryLevel()
。只有被使用BroadcastReceiver
实现的解决方案,但我知道它会被称为对电池电量的变化事件每次。请告诉我如何只能一次获得该信息? 最佳答案
该 Intent.ACTION_BATTERY_CHANGED
广播是什么所谓的“粘滞广播。”因为这是粘性的,你可以用一个空接收器,当你调用registerReceiver
将只能得到电池电量一个时间广播注册。
该功能可让电池电量没有收到更新会是这个样子:
public float getBatteryLevel() {
Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// Error checking that probably isn't needed but I added just in case.
if(level == -1 || scale == -1) {
return 50.0f;
}
return ((float)level / (float)scale) * 100.0f;
}
更多的数据可以从这个粘广播拉动。使用返回
batteryIntent
作为 BatteryManager
类概述您可以访问其他附加功能。关于android - 获取电池电量只有一次使用Android SDK [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15746709/
10-10 06:20