Battery Status API w HTML5

HTML5, choć istnieje już dość długo, jeszcze nie w całości został zaimplementowany w nowych przeglądarkach i cały czas wzbogaca się o nowe funkcje. Powoli daje dostęp do ciekawych informacji, które mogą być wykorzystane w różny sposób – m.in. do informacji o sprzęcie.

Wstęp

Poniżej znajdują się informacje o stanie baterii twojego urządzenia (dostępne tylko, gdy Twoja przeglądarka wspiera Battery Status API):

Wyświetliła się informacja? Nie wierzysz? Sprawdź! (pod warunkiem, że używasz Firefoksa pod Windowsem) :) Jeśli korzystasz z urządzenia z akumulatorem, powyższe dane powinny być prawidłowe. Jeśli urządzenie nie posiada akumulatora, komunikat będzie cały czas informował o ładowaniu i 100% naładowaniu akumulatora. Jeśli właśnie odłączasz zasilanie urządzenia, aby sprawdzić komunikat, odczekaj chwilę – urządzenie potrzebuje chwili pracy na baterii, aby określić czas do rozładowania. Niestety nie wszystkie przeglądarki są zgodne z tym rozwiązaniem, ale po kolei.

 

Jak to działa – Battery Status API

Na początku wstępu we wpisie użyłem prostego kodu HTML bazującego na wpisie ze Smartjava.org:

var battery = navigator.mozBattery;
document.write("\<span style=\"color: #ff0000;\"\>");
if(battery == undefined){
    document.write("Wygląda na to, że Twoja przegladarka nie wspiera Battery Status API.");
} else {
    document.write("Obecnie bateria Twojego urządzenia jest naładowana w " + Math.round(battery.level * 100) + "%. ");
    if (battery.charging) {
        document.write("Urządzenie jest w trakcie ładowania, ilość minut do pełnego naładowania: " + (Math.round(battery.chargingTime / 60)) + ".");
    } else {
         document.write("Urządzenie jest w trakcie rozładowywania, ilość minut do rozładowania: " + (Math.round(battery.dischargingTime / 60)) + ".");
    }
}
document.write("\<\/span\>");

Nie jest on idealny i nie przewiduje niektórych stanów (jak brak działającego API, niepokazywanie informacji o czasie do naładowania, gdy bateria w pełni naładowana itp), ale to tylko przykład i dzięki niemu wyświetliłem w tekście informację o stanie baterii. Jest to możliwe dzięki nowej rekomendacji do HTML5, którą można znaleźć na stronach W3C. Opisuje ona m.in. interfejs API:

[NoInterfaceObject]
interface BatteryManager : EventTarget {
    readonly attribute boolean   charging;
    readonly attribute double    chargingTime;
    readonly attribute double    dischargingTime;
    readonly attribute double    level;
    [TreatNonCallableAsNull]
             attribute Function? onchargingchange;
    [TreatNonCallableAsNull]
             attribute Function? onchargingtimechange;
    [TreatNonCallableAsNull]
             attribute Function? ondischargingtimechange;
    [TreatNonCallableAsNull]
             attribute Function? onlevelchange;
};

Z poziomu tego interfejsu mamy dostęp do podstawowych informacji o baterii – stan naładowania, status ładowania, pozostały czas do naładowania/rozładowania i inne.

Autor wpisu, na którym (wpisie) się opierałem, przygotował ładniejszą formę prezentacji tych informacji dostępną tutaj.

 

Gdzie działa

Interfejs testowałem w najnowszych wersjach przeglądarek pod Windows 7:

  • Firefox 12.0
  • Internet Explorer 9.0
  • Chrome 19.0
  • Opera 12.00

Wśród nich tylko Firefox pokazał informacje:

Na innych przeglądarkach wyglądało to tak:

Sprawdzałem też działanie na przeglądarkach mobilnych na Androidzie (domyślna Androidowa, Firefox, Opera Mobile, Chrome beta) i na ani jednej informacja nie została prawidłowo pokazana. Autor wpisu na Smartjava.org wspomina, ze na Firefoksie pod Androidem funkcjonalność ta jest już zaimplementowana. Niestety w moim przypadku nie zadziałała, choć specjalnie sprawdzałem, czy nie ma aktualizacji tej przeglądarki. Prawdopodobnie publicznie dostępna wersja jeszcze nie doczekała się tego interfejsu (nie sprawdzałem wersji beta, w której to rozwiązanie ponoć działa).

 

Podsumowanie

Wraz ze zwiększaniem się ilości urządzeń mobilnych, które coraz częściej służą nam też do pracy, dodanie API do pobierania informacji o stanie baterii wydaje się być dobrym pomysłem. Dzięki niemu możliwe będzie wyłączenie “ciężkich” elementów stron, lub zaprzestanie dodatkowej komunikacji, aby zaoszczędzić baterię, gdy będzie bliska rozładowaniu. Dzięki API programiści będą mogli zaimplementować także choćby automatyczne zapisywanie tekstu w CMS-ie, czy ostrzeżenie użytkownika w innych sytuacjach tak, aby nie utracił on swojej pracy przez rozładowaną baterię. Zastosowań jest wiele.

Teraz pozostało tylko poczekać na zaakceptowanie tego API i implementację w innych przeglądarkach.

 

Źródła: Smartjava.org, W3C

Ten wpis został opublikowany w kategorii Programowanie, WWW i oznaczony tagami , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Musisz się zalogować (także Facebook, Google+, Twitter), aby móc dodać komentarz.