前端设备电源管理

lxf2023-12-14 22:50:01

新增api navigator.getBattery

电池状态 API 中的 BatteryManager 接口提供了系统电池电量的一些信息。navigator.getBattery() 方法返回一个 promise 对象,该 promise 在完成状态时将返回一个 BatteryManager 接口。

属性

  • BatteryManager.charging 只读

    一个布尔值,说明当前电池是否正在充电。

  • BatteryManager.chargingTime (en-US) 只读

    一个数字,代表距离充电完毕还需多少秒,如果为 0 则充电完毕。

  • BatteryManager.dischargingTime (en-US) 只读

    一个数字,代表距离电池耗电至空且系统挂起需要多少秒。

  • BatteryManager.level (en-US) 只读

    一个数字,代表系统电量的水平,这个值放缩在 0.0 至 1.0 之间。

方法

方法继承自其父接口EventTarget

事件

  • chargingchange (en-US)

    当电池充电状态(charging 属性)更新时被触发。

  • chargingtimechange (en-US)

    当电池充电时间(chargingTime (en-US) 属性)更新时被触发。

  • dischargingtimechange (en-US)

    当电池断开充电的时间(dischargingTime (en-US) 属性)更新时被触发。

  • levelchange (en-US)

    当电池电量(level (en-US) 属性)更新时被触发。

举个栗子

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

  battery.addEventListener("chargingchange", () => {
    updateChargeInfo();
  });
  function updateChargeInfo() {
    console.log(`充电中? ${battery.charging ? "Yes" : "No"}`);
  }

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

  battery.addEventListener("chargingtimechange", () => {
    updateChargingInfo();
  });
  function updateChargingInfo() {
    console.log(`距离充满还剩: ${battery.chargingTime} s`);
  }

  battery.addEventListener("dischargingtimechange", () => {
    updateDischargingInfo();
  });
  function updateDischargingInfo() {
    console.log(`还能撑: ${battery.dischargingTime} s`);
  }
});

测试后小计

  • dischargingtimechange这个事件在断电后不会立即触发,在电量变化后会触发,但触发时机不确定,断电后电量100%的时候也会触发,level一直为1。
  • 断电中,chargingTime值为infinite
  • 插电中,dischargingtimechange值为infinite

支持性

前端设备电源管理

「Safari」和「Firefox」完全不支持。

「Chrome」和「Opera」基本完美支持(14年底后的版本都支持)

「Edge」20年后的版本支持。

这个支持性,基本和大多数业务场景无缘了。套壳app上可以用。场景略微有点窄。

本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!