Battery Status API
Prin intermediul Battery Status API se poate accesa informația despre bateria dispozitivului. Această informație poate fi folosită, de exemplu, pentru adaptarea paginii web în funcție de starea bateriei. Pentru a obține informații despre bateria, acest API definește interfața BatteryManager, care poate fi utilizată. Pentru a obține un obiect de tip BatteryManager, se apelează metoda getBattery() a proprietății window.navigator:
navigator.getBattery()
.then((batteryManager)=>console.log(batteryManager)); // BatteryManager { ......}
navigator.getBattery() returnează un promise. Funcția care este pasată lui then(), primește ca parametru obiectul BatteryManager.
Interfața BatteryManager oferă o serie de proprietăți cu informații despre bateria:
- charging: valoare booleană, care indică dacă acumulatorul se încarcă în acest moment
- chargingTime: numărul care indică timpul rămas în secunde până la încărcarea completă a acumulatorului, sau 0, dacă acumulatorul este deja complet încărcat. Dacă bateria nu se încarcă în momentul actual, atunci are valoarea Infinity
- dischargingTime: numărul care indică timpul rămas în secunde până la descărcarea completă a acumulatorului și suspendarea activității sistemului. Dacă bateria se încarcă în momentul actual, atunci are valoarea Infinity
- level: numărul care indică nivelul de încărcare a bateriei sistemului, scalat la o valoare între 0,0 și 1,0
De exemplu, să obținem informația despre starea bateriei:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>FDC.COM</title>
</head>
<body>
<script>
async function displayBatteryStatus(){
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);
}
displayBatteryStatus();
</script>
</body>
</html>
Evenimente ale bateriei
BatteryManager oferă o serie de evenimente, cu ajutorul cărora se poate urmări schimbarea stării bateriei:
- chargingchange: se declanșează când se schimbă starea de încărcare a bateriei (proprietatea charging)
- chargingtimechange: se declanșează când se schimbă timpul până la încărcarea completă a bateriei (proprietatea chargingTime)
- dischargingtimechange: se declanșează când se schimbă timpul până la descărcarea completă a bateriei (proprietatea dischargingTime)
- levelchange: se declanșează când se schimbă nivelul de încărcare al bateriei (proprietatea level)
De exemplu, să procesăm evenimentele pentru a urmări starea bateriei:
function displayBatteryStatus(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)=>{
displayBatteryStatus(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));
});