Battery Status API

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Battery Status API,更常被稱為 Battery API,提供有關系統電池充電狀態的資訊,並允許你透過事件通知來得知電池電量或充電狀態的變化。這可以用來調整應用程式的資源使用,以在電池電量低時減少耗電,或者在電池耗盡前儲存變更以防止資料遺失。

備註: 此 API 無法在 Web Worker 中使用(不會透過 WorkerNavigator 暴露)。

介面

BatteryManager

提供有關系統電池充電狀態的資訊。

擴展至其他介面

返回一個 Promise,其會兌現為一個 BatteryManager 物件。

範例

在此範例中,我們監聽充電狀態(是否插電充電中)以及電池電量和時間的變化。這是透過監聽 chargingchangelevelchangechargingtimechangedischargingtimechange 事件來完成的。

js
navigator.getBattery().then((battery) => {
  function updateAllBatteryInfo() {
    updateChargeInfo();
    updateLevelInfo();
    updateChargingInfo();
    updateDischargingInfo();
  }
  updateAllBatteryInfo();

  battery.addEventListener("chargingchange", () => {
    updateChargeInfo();
  });
  function updateChargeInfo() {
    console.log(`電池正在充電嗎?${battery.charging ? "是" : "否"}`);
  }

  battery.addEventListener("levelchange", () => {
    updateLevelInfo();
  });
  function updateLevelInfo() {
    console.log(`電池電量:${battery.level * 100}%`);
  }

  battery.addEventListener("chargingtimechange", () => {
    updateChargingInfo();
  });
  function updateChargingInfo() {
    console.log(`電池充電時間:${battery.chargingTime}`);
  }

  battery.addEventListener("dischargingtimechange", () => {
    updateDischargingInfo();
  });
  function updateDischargingInfo() {
    console.log(`電池放電時間:${battery.dischargingTime}`);
  }
});

參見規範中的範例

規範

Specification
Battery Status API

瀏覽器相容性

api.BatteryManager

api.Navigator.getBattery

參見