Мобильные устройства представляют все больший сегмент всего веб-трафика. Этот трафик настолько существенен, что API и методы проектирования были созданы специально для обслуживания мобильных устройств. Примером этого является API состояния батареи W3C , который позволяет приложению проверять состояние батареи устройства. В этой статье рассматривается сравнительно новый API и показано, как начать внедрять его в свои приложения сегодня.
Обнаружение поддержки
API поддержки батареи по-прежнему в основном не поддерживается. Поэтому вы должны убедиться, что он существует, прежде чем пытаться его использовать. Следующая функция возвращает логическое значение, указывающее, поддерживает ли браузер пользователя API. Функция проверяет наличие объекта navigator.battery
. Если он не существует, он также проверяет mozBattery
объекта mozBattery
для Mozilla. Я видел код, который также проверяет наличие webkitBattery
, но я не смог проверить его существование в Chrome.
function isBatteryStatusSupported() { return !!(navigator.battery || navigator.mozBattery); }
Осмотр батареи
Если объект battery
существует, он будет содержать следующие четыре свойства только для чтения.
-
charging
— это логическое значение указывает,charging
ли в данный момент аккумулятор системы. Если в системе нет батареи или значение не может быть определено, это будетtrue
. -
chargingTime
— это числовое значение представляет количество времени в секундах, оставшееся до полной зарядки батареи.chargingTime
устанавливается в ноль, если батарея полностью заряжена или если в системе нет батареи. Если система не заряжается или не может определить оставшееся время, устанавливается значениеInfinity
. -
dischargingTime
— как иchargingTime
, это значение представляет количество секунд, оставшихся до полной разрядки батареи и приостановки системы. Если время разряда не может быть определено, батарея отсутствует или батарея заряжается, тогда это значение устанавливается вInfinity
. -
level
— это числовое значение представляет текущий уровень заряда батареи. Значение варьируется от 0 до 1,0 и соответствует проценту оставшегося срока службы батареи. Значение 1.0 указывает, что батарея полностью заряжена, батарея отсутствует или уровень не может быть определен.
Обнаружение событий батареи
Каждое из ранее обсужденных свойств связано с событием батареи. Эти события используются для определения изменений в состоянии батареи. Например, подключение системы может привести к переходу charging
с false
на true
. Четыре типа событий батареи перечислены ниже.
-
chargingchange
— этот тип события происходит при обновленииcharging
. Эти события могут быть обработаны с помощью обработчика событияonchargingchange()
. -
chargingtimechange
— эти события генерируются при обновлении зарядкиTime. Эти события могут быть обработаны обработчиком событияonchargingtimechange()
. -
dischargingtimechange
— при обновленииdischargingtimechange
запускается событиеdischargingtimechange
. Эти события могут быть обработаны обработчиком событияondischargingtimechange()
. -
levelchange
— Обновленияlevel
приводят кlevelchange
этих событий. Они могут быть обработаны с помощью обработчика событийonlevelchange()
.
Демо-страница
В следующем коде показано, как использовать свойства и события API состояния батареи. На странице примера отображается значение каждого свойства и обновляется по мере возникновения событий. Страница также доступна онлайн .
<!DOCTYPE html> <html lang="en"> <head> <title>The Battery Status API - Example</title> <meta charset="UTF-8" /> <script> window.addEventListener("load", function() { var battery = navigator.battery || navigator.mozBattery; function displayBatteryStats() { document.getElementById("charging").textContent = (battery.charging) ? "charging" : "not charging"; document.getElementById("chargingtime").textContent = battery.chargingTime; document.getElementById("dischargingtime").textContent = battery.dischargingTime; document.getElementById("level").textContent = battery.level * 100; } if (battery) { displayBatteryStats(); battery.addEventListener("chargingchange", displayBatteryStats, false); battery.addEventListener("chargingtimechange", displayBatteryStats, false); battery.addEventListener("dischargingtimechange", displayBatteryStats, false); battery.addEventListener("levelchange", displayBatteryStats, false); } else { document.getElementById("stats").textContent = "Sorry, your browser does not support the Battery Status API"; } }, false); </script> </head> <body> <div id="stats"> Your battery is currently <span id="charging"></span>.<br /> Your battery will be charged in <span id="chargingtime"></span> seconds.<br /> Your battery will be discharged in <span id="dischargingtime"></span> seconds.<br /> Your battery level is <span id="level"></span>%. </div> </body> </html>
Вывод
В этой статье представлен полный обзор API состояния батареи. Хотя поддержка еще не получила широкого распространения, это всего лишь вопрос времени. Учитывая распространение мобильного Интернета, разработчики должны начать включать батарею в свои проекты как можно скорее.