Sprawdzanie Battery Status API
Sprawdź czy Twoja przeglądarka obsługuje Battery Status API. Wyświetl aktualny poziom baterii, stan ładowania i szacowany czas. Narzędzie dla deweloperów. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
navigator.getBattery(); wynik pojawi się tutaj automatycznie.
Odczyt pochodzi z API przeglądarki (navigator.getBattery()) i dotyczy urządzenia, na którym otwarto tę stronę — jest wykonywany lokalnie, nic nie jest wysyłane na serwer. API działa w Chrome, Edge i Operze (komputer i Android) na stronach HTTPS. Firefox i Safari go nie udostępniają, a na komputerze stacjonarnym bez baterii przeglądarka zwykle zgłasza 100% i zasilanie sieciowe.
| Właściwość API | Jak używa jej narzędzie |
|---|---|
| Poziom naładowania (level) | liczba 0–1 z API; narzędzie zaokrągla do procentów 0–100 i pokazuje na pasku oraz w kafelku „Poziom naładowania” |
| Zasilanie (charging) | prawda/fałsz: zasilacz czy bateria; kafelek pokazuje „ładowanie” albo „bateria”, a opis dodaje stan „Naładowana” przy pełnym poziomie |
| Do pełnego naładowania (chargingTime) | szacunek przeglądarki w sekundach; format „2 godz. 15 min”, a tuż po zmianie stanu może być „brak szacunku” |
| Pozostały czas pracy (dischargingTime) | szacunek sekund do wyczerpania baterii przy zasilaniu z akumulatora; nieskończoność i wartości ujemne traktowane jako „brak szacunku” |
| Status poziomu | progi ze skryptu: do 10% bez ładowania = Problem (pasek czerwienieje), do 20% = Uwaga, powyżej albo przy ładowaniu = OK |
| Zdarzenia na żywo | cztery obserwatory API: levelchange, chargingchange, chargingtimechange, dischargingtimechange — każda zmiana dopisuje wpis w dzienniku i odświeża kafelki |
| Środowisko | Odczyt | Szczegóły |
|---|---|---|
| Chrome, Edge, Opera — komputer | TAK | pełny odczyt: poziom, ładowanie i oba szacunki czasu |
| Chrome, Edge, Opera — Android | TAK | pełny odczyt, strona musi być na HTTPS |
| Firefox | NIE | celowo nie udostępnia API ze względów prywatności |
| Safari (macOS, iPhone, iPad) | NIE | celowo nie udostępnia API ze względów prywatności |
| Strona bez HTTPS | NIE | API wymaga bezpiecznego kontekstu (isSecureContext) |
| Komputer bez baterii | — | przeglądarka zwykle zgłasza 100% i zasilanie sieciowe — odczyt jest, ale nie opisuje realnej baterii |
Warto wiedzieć — Battery API a prywatność i interpretacja odczytu
Prywatność i fingerprinting
Dokładny stan baterii bywał używany do śledzenia użytkowników — kombinacja poziomu i szacowanego czasu tworzy odcisk palca urządzenia. Dlatego API jest wycofywane ze specyfikacji, a Firefox i Safari celowo go nie wdrożyły.
Odczyt zostaje u Ciebie
Skrypt liczy i rysuje wszystko w przeglądarce — poziom, stan ładowania, szacunki i dziennik zdarzeń nie opuszczają urządzenia. Wyłączenie internetu po załadowaniu strony nie zatrzyma działania narzędzia.
Szacunki czasu potrafią „dojść”
Tuż po podłączeniu albo odłączeniu zasilania przeglądarka często zgłasza brak szacunku lub wartość nierealną. Poczekaj chwilę i kliknij „Odczytaj ponownie” — system potrzebuje czasu na kalibrację.
Niski poziom — co oznaczają kolory
Pasek zmienia kolor przy progach z narzędzia: do 20% bez ładowania to Uwaga, do 10% to Problem. To sygnał, by podłączyć zasilanie — nie jest to diagnostyka akumulatora ani porada serwisowa.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćBattery Status API – testowanie obsługi baterii w przeglądarce
Battery Status API (W3C) pozwala aplikacjom webowym odczytać poziom baterii urządzenia przez JavaScript. Narzędzie testuje czy Twoja przeglądarka udostępnia te dane i wyświetla aktualne informacje: poziom naładowania, stan ładowania, czas do pełnego naładowania lub rozładowania.
Czym jest Battery Status API
Battery Status API (specyfikacja W3C) udostępnia JavaScript API: navigator.getBattery() zwraca Promise z obiektem BatteryManager. Właściwości: battery.level (0.0–1.0, poziom naładowania), battery.charging (boolean, czy ładuje), battery.chargingTime (sekundy do pełna), battery.dischargingTime (sekundy do rozładowania). Eventy: chargingchange, chargingtimechange, dischargingtimechange, levelchange.
Obsługa w przeglądarkach
Chrome: obsługiwany (Desktop i Android). Firefox: usunięty w v52+ (prywatność – fingerprinting). Safari: brak obsługi. Edge: obsługiwany (Chromium-based). Opera: obsługiwany. Uwaga: wiele przeglądarek celowo ogranicza lub usuwa API ze względu na privacy (bateria mogła być używana do fingerprinting użytkownika).
Przykład kodu JavaScript
navigator.getBattery().then(battery => { console.log(battery.level*100 + "%"); console.log(battery.charging ? "Ładowanie" : "Bateria"); console.log(battery.chargingTime + " s do pełna"); battery.addEventListener("levelchange", () => { console.log("Zmiana:", battery.level); }); });
Zastosowania Battery API
PWA (Progressive Web App): dostosuj zachowanie przy niskiej baterii (zmniejsz polling, odłącz WebSocket). Gry webowe: tryb oszczędzania energii. Analityka: sprawdź czy użytkownicy z niską baterią mają wyższy bounce rate. Powiadomienia: "Bateria niska – zapisz pracę". Monitoring: alertuj użytkownika przy < 20%.
Jak działa sprawdzanie poziomu baterii w przeglądarce
Po kliknięciu przycisku testu strona najpierw sprawdza, czy w obiekcie navigator istnieje metoda getBattery. To jedno pytanie decyduje o wszystkim: jeśli metody nie ma, przeglądarka nie udostępnia Battery Status API i nie ma skąd pobrać danych. Jeśli metoda jest dostępna, wywołanie zwraca Promise, a więc wynik pojawia się z niewielkim opóźnieniem, a nie natychmiast po kliknięciu.
Po rozwiązaniu Promise otrzymujemy obiekt BatteryManager i odczytujemy z niego cztery właściwości. Poziom naładowania jest podany jako ułamek z zakresu od 0,0 do 1,0, dlatego narzędzie mnoży go przez 100 i pokazuje wartość procentową. Wartość logiczna charging decyduje, czy stan opiszemy jako ładowanie, czy jako pracę na baterii, a chargingTime i dischargingTime to liczby sekund do pełnego naładowania albo do rozładowania.
Ostatni element to nasłuch zdarzeń. Zamiast odpytawać przeglądarkę w pętli, narzędzie rejestruje obsługę zdarzeń levelchange, chargingchange, chargingtimechange i dischargingtimechange. Gdy system zgłosi zmianę, wyświetlane wartości są przeliczane ponownie. Dzięki temu odczyt pozostaje aktualny, a strona nie zużywa dodatkowej energii na ciągłe sprawdzanie stanu baterii.
Przykład krok po kroku
- Otwierasz stronę narzędzia w Chrome na laptopie lub w Chrome na Androidzie. Strona nie wykonuje jeszcze żadnego odczytu.
- Klikasz przycisk testu. Skrypt sprawdza, czy navigator.getBattery istnieje. W Chrome, Edge i Operze przechodzi do kolejnego kroku, w Safari i Firefoksie zatrzymuje się i pokazuje komunikat o braku obsługi.
- Wywołanie navigator.getBattery() zwraca Promise. Do momentu jego rozwiązania nie wiadomo jeszcze, jaki jest poziom baterii, dlatego narzędzie pokazuje stan oczekiwania.
- Promise zostaje rozwiązany i zwraca obiekt BatteryManager. Z niego odczytywane są poziom, stan ładowania oraz oba czasy.
- Poziom jest zamieniany na procent: wartość 1,0 oznacza 100%, wartość 0,0 oznacza 0%, a wartości pośrednie są proporcjonalne, np. 0,5 to 50%.
- Czasy, które API podaje w sekundach, są prezentowane w czytelniejszej formie minut i godzin. Wartości, których API nie potrafi oszacować, pokazywane są jako brak danych.
- Do obiektu BatteryManager zostają dopisane nasłuchy zdarzeń. Od tego momentu każda zmiana poziomu lub stanu ładowania odświeża wynik bez ponownego klikania przycisku.
Właściwości i zdarzenia w praktyce
| Element API | Typ i jednostka | Co odczytuje narzędzie |
|---|---|---|
| battery.level | liczba zmiennoprzecinkowa 0,0-1,0 | Ułamek naładowania; mnożony przez 100 daje wartość procentową, gdzie 1,0 to 100% |
| battery.charging | wartość logiczna true lub false | Informacja, czy urządzenie jest podłączone do zasilania i ładuje |
| battery.chargingTime | liczba sekund | Szacowany czas do pełnego naładowania; 0 przy pełnej baterii |
| battery.dischargingTime | liczba sekund | Szacowany czas pracy do rozładowania |
| chargingchange | zdarzenie bez danych | Zmiana stanu ładowania; odświeżenie opis stanu |
| chargingtimechange | zdarzenie bez danych | Zmiana szacowanego czasu do pełnego naładowania |
| dischargingtimechange | zdarzenie bez danych | Zmiana szacowanego czasu pracy na baterii |
| levelchange | zdarzenie bez danych | Zmiana poziomu naładowania; ponowne przeliczenie procentu |
Jak korzystać z wyniku
- Testuj na urządzeniu mobilnym. To na telefonach i tabletach odczyt jest najbardziej sensowny, bo mają realną baterię. Na komputerze stacjonarnym wynik bywa mylący.
- Reaguj na zdarzenia, nie odpytuj w pętli. Ciągłe sprawdzanie poziomu w interwale samo zużywa energię. Nasłuch four zdarzeń jest tańszy i wystarczający.
- Zawsze przygotuj plan B. Skoro API nie działa w każdej przeglądarce, funkcja oparta na poziomie baterii musi mieć zachowanie domyślne dla sytuacji, gdy danych nie ma.
- Nie traktuj wartości jako pomiaru laboratoryjnego. System operacyjny podaje wartości zaokrąglone i szacunkowe, więc różnice o kilka punktów procentowych nie muszą oznaczać realnej zmiany.
- Sprawdź stan ładowania razem z poziomem. Sam procent bez informacji, czy urządzenie jest podłączone, prowadzi do błędnych wniosków, np. przy 100% na kablu.
Ograniczenia i źródła błędów
- Brak obsługi w części przeglądarek. Firefox usunął API w wersji 52, a Safari go nie wprowadziło. Wynik testu zależy więc od przeglądarki, a nie od samego urządzenia.
- Dokładność zależy od systemu. Poziom baterii pochodzi z systemu operacyjnego i bywa zaokrąglany lub aktualizowany rzadko, więc może nie zmieniać się płynnie.
- Zakres danych jest wąski. API nie podaje napięcia, temperatury, liczby cykli ani stanu zużycia ogniwa, więc nie zastępuje diagnostyki baterii.
- Czasy są szacunkowe. chargingTime i dischargingTime to prognozy oparte na chwilowym poborze energii. Gdy API nie potrafi ich policzyć, zwraca wartość nieskończoną, co nie jest błędem.
Najczęstsze pytania
Dlaczego Firefox usunął Battery Status API?
W 2015 r. badacze (Olejnik et al.) wykazali że battery.level + battery.chargingTime + battery.dischargingTime = unikalny fingerprint urządzenia ze skutecznością ~67%. Dzięki temu trackerzy mogli śledzić użytkowników nawet po wyczyszczeniu cookies. Firefox usunął API w v52 (2017). Safari nigdy go nie zaimplementował. To jeden z nielicznych przypadków usunięcia zaakceptowanego standardu ze względu na prywatność.
Jak sprawdzić poziom baterii w Node.js?
Battery Status API działa tylko w przeglądarce. W Node.js: systeminformation (npm) – si.battery() zwraca hasBattery, percent, isCharging, timeRemaining. PowerShell (Windows): Get-WmiObject Win32_Battery. Linux: cat /sys/class/power_supply/BAT0/capacity. macOS: pmset -g batt.
Czy Battery API działa na telefonie?
Android Chrome: obsługiwany (fizyczna bateria). Android Firefox: usunięty. iOS Safari: brak obsługi. PWA na Androida z Chrome: dostęp do baterii możliwy. Ionic/Cordova: wtyczka cordova-plugin-battery-status (działa na iOS i Android).
Jak symulować niski poziom baterii w DevTools?
Chrome DevTools: zakładka Sensors (Cmd+Shift+P → "Sensors"). W sekcji Battery: mock battery level, charging state, charging/discharging time. Przydatne do testowania PWA z logiką battery-aware. Firefox: brak symulatora baterii (API usunięte).
Jakie inne API mogą naruszać prywatność?
Fingerprinting APIs: Canvas (unikalny rendering GPU), WebGL (renderer, vendor), AudioContext (AudioWorklet timing), Screen Resolution, Timezone, Language, Plugin list. Battery API był w tej grupie. Privacy Sandbox (Google): próba ograniczenia fingerprinting przy zachowaniu funkcjonalności reklamowej.
Dlaczego narzędzie nie pokazuje poziomu baterii w mojej przeglądarce?
Najprawdopodobniej przeglądarka nie udostępnia Battery Status API. Obsługują je Chrome, Edge i Opera, Firefox usunął je w wersji 52, a Safari nigdy nie wprowadziło. Jeśli metoda navigator.getBattery nie istnieje, strona nie ma skąd pobrać danych.
Czy sprawdzanie baterii działa na Androidzie?
Tak, Chrome na Androidzie udostępnia to API, dlatego na telefonie zwykle zobaczysz poziom naładowania, stan ładowania oraz szacowany czas. Na komputerze wynik może być mniej wiarygodny.
Co oznacza wynik 1,0 na poziomie naładowania?
To pełne naładowanie, czyli 100%. Wartość level jest ułamkiem z zakresu od 0,0 do 1,0, dlatego narzędzie mnoży ją przez 100 i pokazuje procent.
Dlaczego czas ładowania albo rozładowania pokazuje nieskończoność?
Taką wartość zwraca samo API, gdy nie potrafi oszacować czasu. Dzieje się tak na przykład wtedy, gdy urządzenie jest w trakcie rozładowywania i nie ma sensownej prognozy ładowania. To normalne, a nie błąd narzędzia.
Czy strona może odczytać poziom baterii bez mojej zgody?
W przeglądarkach, które udostępniają to API, odczyt nie wymaga osobnej zgody użytkownika. Właśnie dlatego część przeglądarek usunęła tę funkcję lub zgrubia dane, aby utrudnić fingerprinting urządzenia.
Powiązane narzedzia: tester WebGL i GPU, detektor funkcji przegladarki i tester rozdzielczosci ekranu.