我已经在网上搜索并找不到我的问题的答案。我的问题是只获取一次电池电量信息,例如。调用函数getBatteryLevel()
。只有使用BroadcastReceiver
才能实现的解决方案,但据我所知,每次在电池电量发生变化时都会调用它。请告诉我,我如何才能获得这些信息一次?使用Android SDK仅获取一次电池电量
回答
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
类中概述的其他附加内容。
现在不能使用接收器(例如Widget)调用此方法。您是否知道通过Widget的onUpdate()方法获取电池电量的其他方法? –
如果你是通过一个小部件来完成这个工作,你需要像这样调用'registerReceiver':'getApplicationContext()。registerReciever(...)'使它工作。 – MCeley
我有一个上下文并可以调用它,但是不允许从接收者中调用该调用,并将此或null作为第一个参数“receiver”传递。日志消息非常明确,您无法从接收器中调用。 –
- 1. 获取电池电量
- 2. 使用服务获取电池电量
- 3. Android电池电量
- 4. 在Android服务中使用BroadcastReceiver获取电池电量
- 5. 检索电池电量仅在我第一次使用时才起作用
- 6. 获取电池电压
- 7. SocketScan在Swift中获取电池电量
- 8. Android的电池电量低
- 9. SDK中的Android电池
- 10. 测量电池电量?
- 11. 在android小部件中获取电池电量
- 12. 在特定代码后获取Android上的电池电量
- 13. 如何读取电池充电次数?
- 14. 当使用intent和BroadcastReceiver来获取android电池电量时的怪异行为
- 15. 从BatterManager获取上次电池充电日期时间
- 16. Phonegap上的电池电量
- 17. 获取电池充电时间
- 18. android准确的电池电量变化?
- 19. Android开发:显示电池电量
- 20. 电池电量不足。 Android行为
- 21. 如何在连接到BLE设备后获取电池电量?
- 22. 获取电池的温度android
- 23. 在android中获取电池信息
- 24. Android GPS电池使用
- 25. 电池使用在Android的
- 26. Android电池使用情况
- 27. 获取电池级JavaScript
- 28. NStimer的电池电量
- 29. InstallShield电池电量警告
- 30. iOS/Android GPS电池吸取?
使用'BroadcastReceiver',然后一旦你取得值,只是取消注册接收器。 – TronicZomB