电池状态API简介

移动设备占所有Web流量的越来越大的一部分。 这种流量非常大,以至于专门针对移动设备创建了API和设计实践。 W3C的Battery Status API就是一个例子,该API允许应用程序检查设备电池的状态。 本文探讨了相对较新的API,并向您展示了如何立即将其整合到您的应用程序中。

检测支持

仍然主要不支持Battery Support API。 因此,您必须先确认它存在,然后再尝试使用它。 以下函数返回一个布尔值,指示用户的浏览器是否支持API。 该函数检查是否存在navigator.battery对象。 如果不存在,它还将检查Mozilla特定的mozBattery对象。 我看过也检查webkitBattery代码,但是我无法验证它是否存在于Chrome中。

function isBatteryStatusSupported() {
  return !!(navigator.battery || navigator.mozBattery);
}

检查电池

如果battery对象存在,它将包含以下四个只读属性。

  • charging –此布尔值指示系统电池当前是否正在充电。 如果系统没有电池,或者无法确定该值,则为true
  • chargingTime –该数值表示电池充满电之前剩余的时间(以秒为单位)。 如果电池已满,或者系统没有电池,那么chargingTime设置为零。 如果系统未充电,或无法确定剩余时间,则将其设置为Infinity
  • dischargingTime -到类似chargingTime ,该值表示的剩余直到电池完全放电,并且系统将暂停的秒数。 如果无法确定放电时间,没有电池或电池正在充电,则将该值设置为Infinity
  • level –此数值代表当前的电池电量。 取值范围是0到1.0,对应于剩余电池寿命的百分比。 值1.0表示电池已充满电,没有电池或无法确定电量。

检测电池事件

前面讨论的每个属性都与电池事件有关。 这些事件用于识别电池状态的变化。 例如,插入系统将导致chargingfalse变为true 。 下面列出了四种电池事件。

  • chargingchange –更新charging时会触发此类事件。 这些事件可以使用onchargingchange()事件处理程序进行处理。
  • chargingtimechange -当这些事件被解雇chargingTime被更新。 这些事件可以由onchargingtimechange()事件处理程序处理。
  • dischargingtimechange –更新dischargingTime时间时,将触发dischargingtimechange时间更改事件。 这些事件可以由ondischargingtimechange()事件处理程序处理。
  • levelchange –更新level会触发这些事件。 可以使用onlevelchange()事件处理程序来处理它们。

演示页

以下代码显示了如何使用电池状态API属性和事件。 示例页面显示每个属性的值,并在事件发生时更新它们。 该页面也可以在线获得

<!DOCTYPE html>
<html lang="en">
<head>
  <title>The Battery Status API - Example</title>
  <meta charset="UTF-8" />
  <script>
    window.addEventListener("load", function() {
      var battery = navigator.battery || navigator.mozBattery;

      function displayBatteryStats() {
        document.getElementById("charging").textContent = (battery.charging) ? "charging" : "not charging";
        document.getElementById("chargingtime").textContent = battery.chargingTime;
        document.getElementById("dischargingtime").textContent = battery.dischargingTime;
        document.getElementById("level").textContent = battery.level * 100;
      }

      if (battery) {
        displayBatteryStats();
        battery.addEventListener("chargingchange", displayBatteryStats, false);
        battery.addEventListener("chargingtimechange", displayBatteryStats, false);
        battery.addEventListener("dischargingtimechange", displayBatteryStats, false);
        battery.addEventListener("levelchange", displayBatteryStats, false);
      } else {
        document.getElementById("stats").textContent = "Sorry, your browser does not support the Battery Status API";
      }
    }, false);
  </script>
</head>
<body>
  <div id="stats">
    Your battery is currently <span id="charging"></span>.<br />
    Your battery will be charged in <span id="chargingtime"></span> seconds.<br />
    Your battery will be discharged in <span id="dischargingtime"></span> seconds.<br />
    Your battery level is <span id="level"></span>%.
  </div>
</body>
</html>

结论

本文提供了电池状态API的完整摘要。 尽管支持尚不广泛,但这只是时间问题。 鉴于移动Web的激增,开发人员应该尽快将电池纳入其设计中。

From: https://www.sitepoint.com/introducing-the-battery-status-api/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值