Battery Status API

Последнее обновление: 16.11.2023

Через 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)); 
});
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850