我已經在網上搜索並找不到我的問題的答案。我的問題是隻獲取一次電池電量信息,例如。調用函數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