Signatur
Beschreibung
Das Interface BatteryManager gehört zur Battery Status API. Eine Instanz erzeugt man nicht selbst. Man bekommt sie über das Promise von navigator.getBattery(). Das Objekt liefert aktuelle Werte zum Akku des Geräts und löst Ereignisse aus, sobald sich diese Werte ändern.
Die wichtigsten schreibgeschützten Eigenschaften:
charging(boolean): Gibt an, ob der Akku gerade geladen wird.level(number): Ladestand zwischen0.0und1.0.chargingTime(number): Sekunden, bis der Akku voll ist.0heißt voll geladen,Infinityheißt, dass der Akku nicht lädt oder die Zeit unbekannt ist.dischargingTime(number): Sekunden, bis der Akku leer ist.Infinityheißt, dass das Gerät lädt oder die Zeit unbekannt ist.
Dazu kommen die Ereignisse chargingchange, levelchange, chargingtimechange und dischargingtimechange. Man kann sie mit addEventListener() abonnieren oder über die passenden on…-Eigenschaften (z. B. onlevelchange) setzen.
Typische Einsatzfälle: Webanwendungen, die bei niedrigem Akkustand Strom sparen. Sie können zum Beispiel Animationen abschalten, seltener im Hintergrund synchronisieren oder Videos in geringerer Qualität laden. Man kann Nutzer auch rechtzeitig warnen, damit sie ihre Arbeit speichern, bevor das Gerät ausgeht.
Rückgabewert
navigator.getBattery(). Diese Methode gibt ein Promise<BatteryManager> zurück.Beispiele
BatteryManager abrufen und Werte auslesen
const zeigeAkkuStatus = async () => {
if (!('getBattery' in navigator)) {
console.log('Battery Status API wird nicht unterstützt.');
return;
}
const battery = await navigator.getBattery();
console.log(`Ladestand: ${Math.round(battery.level * 100)} %`);
console.log(`Lädt: ${battery.charging ? 'ja' : 'nein'}`);
console.log(`Zeit bis voll: ${battery.chargingTime} s`);
console.log(`Restlaufzeit: ${battery.dischargingTime} s`);
};
zeigeAkkuStatus();
Auf Änderungen reagieren und Energiesparmodus aktivieren
const initEnergiesparen = async () => {
const battery = await navigator.getBattery();
const pruefen = () => {
const sparen = !battery.charging && battery.level < 0.2;
document.body.classList.toggle('energiesparen', sparen);
console.log(sparen ? 'Energiesparmodus an' : 'Energiesparmodus aus');
};
battery.addEventListener('levelchange', pruefen);
battery.addEventListener('chargingchange', pruefen);
pruefen();
};
initEnergiesparen();
on-Eigenschaft nutzen und Listener wieder entfernen
const beobachteLaden = async () => {
const battery = await navigator.getBattery();
// Variante 1: Handler über die on-Eigenschaft setzen
battery.onchargingchange = () => {
console.log(`Netzteil ${battery.charging ? 'angeschlossen' : 'getrennt'}`);
};
// Variante 2: addEventListener mit späterem Entfernen
const logZeit = () => console.log(`Restlaufzeit: ${Math.round(battery.dischargingTime / 60)} min`);
battery.addEventListener('dischargingtimechange', logZeit);
// nach 10 Minuten wieder abmelden
setTimeout(() => {
battery.removeEventListener('dischargingtimechange', logZeit);
battery.onchargingchange = null;
console.log('Akku-Beobachtung beendet');
}, 10 * 60 * 1000);
};
beobachteLaden();
// Wichtig · Fallstricke
Browser-Kompatibilität: Die API gibt es nur in Chromium-Browsern (Chrome, Edge, Opera, Samsung Internet). Firefox hat sie in Version 52 aus Datenschutzgründen für Webseiten entfernt. Safari hat sie nie unterstützt. Prüfen Sie deshalb immer mit 'getBattery' in navigator, ob sie vorhanden ist, und behandeln Sie die Werte nur als zusätzliche Hilfe.
Sichere Umgebung: navigator.getBattery() steht nur in sicheren Kontexten (HTTPS) zur Verfügung. Die Permissions Policy battery kann den Zugriff sperren, z. B. in iframes.
Datenschutz: Ladestand und Restlaufzeit ergeben zusammen einen recht eindeutigen Wert. Damit ließen sich Nutzer über mehrere Seiten hinweg wiedererkennen (Fingerprinting). Browser können die Werte deshalb runden oder feste Werte liefern, z. B. level = 1, charging = true, dischargingTime = Infinity.
Randfälle: Geräte ohne Akku (Desktop-PCs) melden in der Regel einen vollen Akku, der lädt. chargingTime und dischargingTime sind oft Infinity. Fangen Sie das ab, bevor Sie die Zeiten anzeigen.