Через 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));
});