Szukałem w internecie i nie mogłem znaleźć odpowiedzi na moje pytanie. Moim problemem jest uzyskanie informacji o poziomie naładowania baterii tylko raz, np. wywołanie funkcji getBatteryLevel()
. Istnieją tylko rozwiązania, które są implementowane za pomocą BroadcastReceiver
, ale jak wiem, będzie on wywoływany za każdym razem, gdy nastąpi zmiana poziomu baterii. Proszę, powiedz mi, jak mogę uzyskać te informacje tylko raz? TransmisjaPoziom naładowania baterii tylko jeden raz za pomocą Androida SDK
Odpowiedz
jest znana jako "transmisja lepka". Ponieważ jest to lepkie, możesz zarejestrować się w celu emisji za pomocą zerowego odbiornika, który uzyska tylko poziom naładowania baterii jeden raz, aby uzyskać czas, dzwoniąc pod numer registerReceiver
.
Funkcja aby uzyskać poziom baterii bez otrzymywania aktualizacji będzie wyglądać mniej więcej tak:
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;
}
Więcej danych można wyciągnąć z tej lepkiej audycji. Za pomocą zwróconego batteryIntent
można uzyskać dostęp do innych dodatków opisanych w klasie BatteryManager
.
Ta metoda nie może teraz zostać wywołana z odbiornika (np. Widget). Czy znasz jakiś inny sposób, aby uzyskać poziom naładowania baterii, który można wykonać za pomocą metody onUpdate() aplikacji Widget? –
Jeśli robisz to z widżetu, będziesz musiał wywołać 'registerReceiver' jak:' getApplicationContext(). RegisterRzever (...) 'aby zadziałał. – MCeley
Mam kontekst i mogę go wywołać, ale wywołanie nie jest dozwolone z odbiornika, przekazując to lub wartość zerową jako pierwszy parametr "odbiornik". Komunikat dziennika jest bardzo wyraźny, że nie można dzwonić z odbiornika. –
- 1. Jak uzyskać prawidłowy poziom naładowania baterii i stan baterii - ios?
- 2. Uzyskaj poziom naładowania podłączonych smartwatchów
- 3. Ostrzeżenie o poziomie naładowania baterii InstallShield
- 4. Parse tylko jeden poziom json
- 5. Symulowanie niskiego poziomu naładowania baterii dla iPhone'ów
- 6. Określ poziom dokładne baterii iPhone
- 7. Jak uzyskać niezależny od platformy poziom naładowania baterii w% w Javie?
- 8. Jak symulować niski poziom naładowania baterii w urządzeniach z systemem Android?
- 9. Jak "ls` tylko jeden poziom głębokości?
- 10. Jak wyświetlić ekran logowania tylko jeden raz?
- 11. Tylko jeden przycisk radiowy wybrany na raz
- 12. Jak ukryć tylko jeden element opcji za pomocą css tylko
- 13. Nie można ustawić funkcji startActivity() za pomocą opcji Chooser zadając tylko jeden raz dla każdej aplikacji.
- 14. Uzyskiwanie poziomu naładowania baterii w urządzeniu z systemem Windows Phone 8?
- 15. Monitoruj ładowanie baterii za pomocą Win32 API
- 16. Udostępnij link i tekst za pomocą Androida Facebook SDK 3.0
- 17. SQL: self przyłączyć za pomocą każdego wiersze tylko raz
- 18. Wylogowanie na Facebooku Za pomocą Androida SDK 3.0
- 19. Jak zdobyć listę znajomych z Facebooka za pomocą Androida sdk?
- 20. eclipse - wyszukiwanie otwiera tylko jeden plik na raz
- 21. jeden document.createElement, dołącz go dwa razy, tylko pokazuje raz
- 22. Sprawdź, czy tylko jeden element istnieje za pomocą Guava
- 23. symfony2: za pomocą asset-dump, można zrzucić tylko jeden plik?
- 24. Budowanie zestawu SDK dla systemu Android: tworzony jest tylko jeden cel Androida
- 25. Odinstaluj stare wersje Androida SDK
- 26. .replaceWith() działa tylko raz
- 27. view.getDrawingCache() działa tylko raz
- 28. Śledzenie za pomocą androida za pomocą opencv
- 29. jak ustawić poziom powiększenia za pomocą css
- 30. onPreviewframe tylko wywoływana raz
Użyj 'BroadcastReceiver', a następnie, gdy uzyskasz wartość, po prostu odrejestruj odbiornik. – TronicZomB