Через Battery Status API можно получить доступ к информации о батарее устройства. Эта информация может, к примеру, использоваться
для адаптации веб-страницы в зависимости от состояния батареи.
Для получения информации о батарее данный API определяет интерфейс BatteryManager, который можно использовать. Чтобы получить
объект типа BatteryManager, у свойства window.navigator
вызывается метод getBattery():
navigator.getBattery() .then((batteryManager)=>console.log(batteryManager)); // BatteryManager { ......}
navigator.getBattery()
возвращает промис. Функция, которая передается в then()
, в качестве параметра получает объект
BatteryManager.
Интерфейс BatteryManager
предоставляет ряд свойств с информацией о батарее:
charging: логическое значение, которое указывает, заряжается ли аккумулятор в данный момент.
chargingTime: число, которое обозначает оставшееся время в секундах до полной зарядки аккумулятора, или 0, если
аккумулятор уже полностью заряжен. Если батарея в текущий момент не заряжается, то имеет значение Infinity
dischargingTime: число, которое обозначает оставшееся время в секундах до полной разрядки аккумулятора и приостановки работы
системы. Если батарея в текущий момент заряжается, то имеет значение Infinity
level: число, которое обозначает уровень заряда аккумулятора системы, масштабированное до значения от 0,0 до 1,0
Например? получим информацию о состоянии батареи:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>METANIT.COM</title> </head> <body> <script> async function dislpayBatteryStatus(){ const batteryManager = await navigator.getBattery(); console.log("is charging: ", batteryManager.charging); console.log("charging time (sec): ", batteryManager.chargingTime); console.log("discharging time (sec): ", batteryManager.dischargingTime); console.log("charge level: ", batteryManager.level); } dislpayBatteryStatus(); </script> </body> </html>
BatteryManager
предоставляет ряд событий, с помощью которых можно отследить изменение состояния батареи:
chargingchange: срабатывает, когда изменяется статус зарядки батареи (свойство charging)
chargingtimechange: срабатывает, когда изменяется время до полной зарядки батареи (свойство chargingTime)
dischargingtimechange: срабатывает, когда изменяется время до полной разрядки батареи (свойство dischargingTime)
levelchange: срабатывает, когда изменяется уровень заряда батареи (свойство level)
Например, обработаем события для отслеживания статуса батареи:
function dislpayBatteryStatus(battery){ console.log("is charging: ", battery.charging); console.log("charging time (sec): ", battery.chargingTime); console.log("discharging time (sec): ", battery.dischargingTime); console.log("charge level: ", battery.level); } navigator.getBattery().then((battery)=>{ dislpayBatteryStatus(battery); battery.addEventListener("chargingchange", (e)=>console.log("is charging: ", e.target.charging)); battery.addEventListener("chargingtimechange", (e)=>console.log("charging time (sec): ", e.target.chargingTime)); battery.addEventListener("dischargingtimechange", (e)=>console.log("discharging time (sec): ", e.target.dischargingTime)); battery.addEventListener("levelchange", (e)=>console.log("charge level: ", e.target.level)); });