Battery Status API - JavaScript
A Battery Status API permite acessar informações sobre o estado da bateria de um dispositivo. Esses dados podem ser utilizados para adaptar o comportamento de uma página web de acordo com o nível de carga ou o status de carregamento da bateria. A API define o objeto BatteryManager, que fornece propriedades e eventos para monitorar o estado da bateria. Você pode obter um objeto BatteryManager
getBattery()
navigator
navigator.getBattery()
.then((batteryManager) => console.log(batteryManager)); // BatteryManager { ... }
O método navigator.getBattery()
then()
BatteryManager
Propriedades do BatteryManager
O objeto BatteryManager
: Um valor booleano que indica se a bateria está sendo carregada no momento.charging
: O tempo restante em segundos até que a bateria esteja completamente carregada. SeráchargingTime
se a bateria já estiver totalmente carregada e0
se não estiver sendo carregada.Infinity
: O tempo restante em segundos até que a bateria esteja completamente descarregada. SerádischargingTime
se a bateria estiver sendo carregada.Infinity
: O nível de carga da bateria, representado como um número entrelevel
e0.0
.1.0
No exemplo abaixo, utilizamos o BatteryManager
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Status da Bateria</title>
</head>
<body>
<script>
async function displayBatteryStatus() {
const batteryManager = await navigator.getBattery();
console.log("Carregando:", batteryManager.charging);
console.log("Tempo restante para carga completa (segundos):", batteryManager.chargingTime);
console.log("Tempo restante para descarga completa (segundos):", batteryManager.dischargingTime);
console.log("Nível de carga:", batteryManager.level);
}
displayBatteryStatus();
</script>
</body>
</html>
Eventos do BatteryManager
A API também fornece eventos que permitem monitorar alterações no status da bateria em tempo real. Estes são os eventos disponíveis:
: Disparado quando o status de carregamento da bateria (propriedadechargingchange
) muda.charging
: Disparado quando o tempo restante para a carga completa (propriedadechargingtimechange
) muda.chargingTime
: Disparado quando o tempo restante para a descarga completa (propriedadedischargingtimechange
) muda.dischargingTime
: Disparado quando o nível de carga da bateria (propriedadelevelchange
) muda.level
O código a seguir demonstra como monitorar as mudanças no status da bateria e responder aos eventos disparados:
function displayBatteryStatus(battery) {
console.log("Carregando:", battery.charging);
console.log("Tempo restante para carga completa (segundos):", battery.chargingTime);
console.log("Tempo restante para descarga completa (segundos):", battery.dischargingTime);
console.log("Nível de carga:", battery.level);
}
navigator.getBattery().then((battery) => {
// Exibe o status inicial da bateria
displayBatteryStatus(battery);
// Adiciona ouvintes para monitorar mudanças no status
battery.addEventListener("chargingchange", () => {
console.log("Carregando:", battery.charging);
});
battery.addEventListener("chargingtimechange", () => {
console.log("Tempo restante para carga completa (segundos):", battery.chargingTime);
});
battery.addEventListener("dischargingtimechange", () => {
console.log("Tempo restante para descarga completa (segundos):", battery.dischargingTime);
});
battery.addEventListener("levelchange", () => {
console.log("Nível de carga:", battery.level);
});
});
Considerações finais
O BatteryManager é uma ferramenta poderosa para criar experiências web mais conscientes do consumo de energia. Por exemplo, é possível ajustar a qualidade de vídeos ou desativar funcionalidades que consomem muitos recursos quando a bateria está baixa. Além disso, os eventos permitem que você reaja dinamicamente às mudanças no status da bateria, oferecendo uma melhor experiência para o usuário.