Start · Sprachen · JavaScript · Referenz · BatteryManager.chargingTime

BatteryManager.chargingTime

Eigenschaft

Schreibgeschützte Eigenschaft, die die verbleibenden Sekunden bis zur vollständigen Ladung des Akkus angibt – <code>0</code> bei vollem Akku, <code>Infinity</code> beim Entladen oder wenn der Wert unbekannt ist.

seit JavaScript Nur Chromium-Browser (Chrome 38+, Edge 79+, Opera) Kategorie: webapi

Signatur

BatteryManager.chargingTime

Beschreibung

Die Eigenschaft chargingTime des BatteryManager-Interfaces gehört zur Battery Status API. Sie gibt als Zahl an, wie viele Sekunden das Gerät voraussichtlich noch braucht, bis der Akku voll ist. Ein BatteryManager-Objekt bekommst du über das Promise von navigator.getBattery().

Diese Werte sind möglich:

  • positive Zahl: geschätzte Restladezeit in Sekunden (das Gerät lädt gerade)
  • 0: Der Akku ist vollständig geladen, oder das Gerät hat keinen Akku (z. B. ein Desktop-PC am Netzstrom)
  • Infinity: Der Akku entlädt sich (charging === false), oder die Plattform kann die Restzeit (noch) nicht schätzen

Die Eigenschaft eignet sich für Hinweise in der Oberfläche („Voll geladen in ca. 25 Minuten“) oder um rechenintensive Aufgaben wie Synchronisation, Video-Verarbeitung oder Backups aufzuschieben, bis das Gerät am Strom hängt oder der Akku voll ist. Wenn sich der Wert ändert, löst der BatteryManager das Ereignis chargingtimechange aus. Darauf solltest du reagieren, statt den Wert regelmäßig abzufragen.

Rückgabewert

Typ
number
Beschreibung
Restladezeit in Sekunden (double); 0 bei vollem Akku bzw. ohne Akku, Infinity beim Entladen oder wenn die Zeit unbekannt ist.

Beispiele

Restladezeit einmalig auslesen

const zeigeLadezeit = async () => {
  if (!('getBattery' in navigator)) {
    console.log('Battery Status API wird nicht unterstützt.');
    return;
  }
  const battery = await navigator.getBattery();
  console.log('Restladezeit (s):', battery.chargingTime);
};

zeigeLadezeit();
Restladezeit (s): 1520

Werte lesbar formatieren – inklusive 0 und Infinity

const formatiereLadezeit = (sekunden) => {
  if (sekunden === 0) return 'Akku ist voll geladen';
  if (!Number.isFinite(sekunden)) return 'Lädt nicht bzw. Restzeit unbekannt';
  const stunden = Math.floor(sekunden / 3600);
  const minuten = Math.round((sekunden % 3600) / 60);
  return stunden > 0
    ? `Voll in ca. ${stunden} h ${minuten} min`
    : `Voll in ca. ${minuten} min`;
};

const battery = await navigator.getBattery();
console.log(formatiereLadezeit(battery.chargingTime));
Voll in ca. 25 min

Auf Änderungen mit chargingtimechange reagieren

const battery = await navigator.getBattery();
const anzeige = document.querySelector('#ladezeit');

const aktualisieren = () => {
  const t = battery.chargingTime;
  anzeige.textContent = t === 0
    ? 'Voll geladen'
    : Number.isFinite(t)
      ? `Noch ${Math.round(t / 60)} Minuten`
      : 'Nicht am Ladegerät';
};

// Variante 1: addEventListener
battery.addEventListener('chargingtimechange', aktualisieren);
// Variante 2: gleichwertig über die on-Property
// battery.onchargingtimechange = aktualisieren;

aktualisieren();

// Später aufräumen:
// battery.removeEventListener('chargingtimechange', aktualisieren);

Aufwendige Aufgabe erst bei vollem Akku starten

const warteAufVollenAkku = async () => {
  const battery = await navigator.getBattery();
  if (battery.chargingTime === 0) return;
  await new Promise((resolve) => {
    const pruefen = () => {
      if (battery.chargingTime === 0) {
        battery.removeEventListener('chargingtimechange', pruefen);
        resolve();
      }
    };
    battery.addEventListener('chargingtimechange', pruefen);
  });
};

await warteAufVollenAkku();
console.log('Akku voll – starte Backup ...');
Akku voll – starte Backup ...

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Die API gibt es nur in Chromium-Browsern (Chrome, Edge, Opera, Samsung Internet). Firefox hat sie aus Datenschutzgründen ab Version 52 entfernt, Safari hat sie nie unterstützt. Prüfe die Unterstützung immer mit 'getBattery' in navigator.
  • Sicherer Kontext: navigator.getBattery() gibt es nur über HTTPS (bzw. localhost). Per Permissions-Policy (battery) kann die Nutzung in iframes blockiert werden.
  • Auf Infinity prüfen: Beim Entladen ist der Wert Infinity, nicht 0 oder null. Rechnest du damit direkt weiter (z. B. Math.round(t / 60)), kommt wieder Infinity heraus. Prüfe deshalb mit Number.isFinite().
  • Mehrdeutige 0: Auch Geräte ohne Akku melden 0 (zusammen mit charging === true und level === 1). Aus 0 kannst du also nicht sicher schließen, dass überhaupt ein Akku vorhanden ist.
  • Ungenauigkeit: Der Wert ist eine Schätzung des Betriebssystems. Er kann direkt nach dem Einstecken des Ladegeräts eine Zeit lang Infinity bleiben, stark schwanken oder aus Datenschutzgründen gerundet sein.
  • Datenschutz: Akkuwerte wurden schon für Fingerprinting missbraucht. Nutze sie nur, wenn sie wirklich einen Mehrwert bringen, und nicht zur Wiedererkennung von Nutzern.