Статьи

Battery javascript API - стан і статус зарядки батареї пристрою c html5 - html5.by

  1. демо
  2. Як влаштовано battery API?
  3. Простий приклад:

Давайте розглянемо Battery API - ще одну новинку в javaScript, яка появіласть на світло з розвитком html5 і мобільних девайсів. Задокументовано вона зовсім недавно (12.2012) і поки доступна тільки для тестування тільки в Firexfox (мобільному і десктопном). Розробники Chrome обіцяють реалізацію незабаром. Battery js API дозволяє отримати всіляку інформацію про заряд батареї, а також стежити за зміною заряду за допомогою багатого набору подій.

А навіщо взагалі цей API потрібен в браузері? Так як багато мобільні додатки живуть всередині браузерної оболонки (в повному обсязі "рідні"), для них було б здорово мати доступ до інформації про систему. Деякі процеси є досить енергоємними (webGl наприклад) і було б не погано отримувати повідомлення про низький рівень заряду батареї і т.п.

У будь-якому випадку, справжня корисність цього API повинна стати очевидною найближчим часом!

Давайте розглянемо приклад (код в кінці статті):

демо

battery API demo

Як влаштовано battery API?

Об'єкт window.navigator.battery має наступні поля:

charging: поточний статус зарядки батареї. Зряжается - true, розряджається - false. У поточній імплементації ми не можемо дізнатися, приєднана взагалі батарея і т.п.

chargingTime: Час (в секундах), що залишився до повної зарядки батареї.

dischargingTime: Час (в секундах), що залишився до повної розрядки батареї.

level: Поточний рівень заряду акумулятора за шкалою від 0 до 1. Встановлюється в 0, якщо заряд батареї вичерпано, система ось-ось "помре" відповідно дорівнює 1, якщо акумулятор повністю заряджений.

Для кожного з цих покзателей є своє подія: onchargingchange, onchargingtimechange, ondischargingtimechange і onlevelchange.

Простий приклад:

JS

// Поки браузери ще не домовилися .. піклуємося про це самі! var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery; console.log ( "Cтатус зарядки батареї:", battery.charging); // true console.log ( "Рівень зарядки батареї:", battery.level); // 0.58 console.log ( "Залишилося часу:", battery.dischargingTime); // 600 battery.addEventListener ( "chargingchange", function (e) {console.log ( "Змінено статус зарядки батареї:", battery.charging);}, false); battery.addEventListener ( "chargingtimechange", function (e) {console.log ( "Змінено час до кінця зарядки:", battery.chargingTime);}, false); battery.addEventListener ( "dischargingtimechange", function (e) {console.log ( "Змінено час, що залишився до розрядки:", battery.dischargingTime);}, false); battery.addEventListener ( "levelchange", function (e) {console.log ( "Змінено рівень зарядки:", battery.level);}, false);

Давайте розглянемо код прикладу на початку статті:

html

<Div class = "battery"> <div class = "battery_core"> <div class = "battery_status"> </ div> </ div> <div class = "battery_stat"> <div class = "battery_stat_percent"> </ div> <div class = "battery_stat_other"> </ div> </ div> </ div>

js

var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery; function setStatus (eventName) {if (battery) {var chargingPercent = Math.round (battery.level * 100); var chargingStatus = (battery.charging)? "<Strong class = 'yes'> Charging </ strong>": "<strong class = 'no'> Not charging </ strong>"; var chargingTime = (battery.chargingTime == "Infinity")? &quot;<Span class = 'no'> - </ span>": parseInt (battery.chargingTime / 60, 10); var dischargingTime = (battery.dischargingTime == "Infinity")? "<Span class = 'no'> - </ span>": parseInt (battery.dischargingTime / 60, 10); document.getElementsByClassName ( "battery_stat_percent") [0] .innerHTML = chargingPercent + "%"; document.getElementsByClassName ( "battery_status") [0] .style.width = chargingPercent + "%"; document.getElementsByClassName ( "battery_stat_other") [0] .innerHTML = chargingStatus + "<br/> Charging time:" + chargingTime + "<br/> Discharging time:" + dischargingTime; } Else {document.getElementsByClassName ( "battery_stat_percent") [0] .innerHTML = ":("; document.getElementsByClassName ( "battery_stat_other") [0] .innerHTML = "battery Api <br> не працює <br> в твоєму браузері "}} if (battery) {battery.addEventListener (" levelchange ", setStatus, false); battery.addEventListener (" chargingchange ", setStatus, false); battery.addEventListener (" chargingtimechange ", setStatus, false); battery.addEventListener ( "dischargingtimechange", setStatus, false);} setStatus ();

Я не буду приводити CSS, щоб не засмічувати статтю. Ви завжди можете знайти його, проінспектувавши демо в вашому улюбленому браузері.

Успіхів!

А навіщо взагалі цей API потрібен в браузері?
Round (battery.level * 100); var chargingStatus = (battery.charging)?
Quot;<Span class = 'no'> - </ span>": parseInt (battery.chargingTime / 60, 10); var dischargingTime = (battery.dischargingTime == "Infinity")?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то