欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

HTML5的一个显示电池状态的API简介

程序员文章站 2023-12-02 18:32:40
这篇文章主要介绍了HTML5的一个显示电池状态的API简介,由Mozilla设计,具体的设备和浏览器支持情况还要通过检测才能确定,需要的朋友可以参考下... 15-06-18...

移动设备的份额在网络流量中在大量增长,其所贡献的网络流量非常庞大,以至于为了移动设备,我们单独创建了一些api和设计理念。一个非常典型的例子是 w3c电池状态api,它允许一个应用程序获知设备的电池状态信息。这篇文章探索了这个新的api,为你展示了如何把它整合进你现有的应用程序。
 检测设备是否支持

目前电池api依旧没有得到主流支持。因此,在使用这个api前需要确认当前设备是否支持此api。下面展示的函数返回一个布恩值(true/false),指示当前浏览器是否支持电池状态api。

该函数首先检测了 navigator.battery 对象是否存在。如果不存在,继续检测 mozilla 专用的

navigator.mozbattery是否存在。我曾经见过有些代码还检测了 webkitbattery对象,但是我无法证实其在chrome中是否存在。

参考文档:https://developer.mozilla.org/en-us/docs/dom/window.navigator.battery
 

xml/html code复制内容到剪贴板
  1. functionisbatterystatussupported() {   
  2.   return!!(navigator.battery || navigator.mozbattery);   
  3. }  

检查电池

如果电池对象存在,它会包含下列四个只读属性。

  •     charging —— (布恩值)指示系统的电池当前是否正在充电。

    如果系统不存在电池,或无法确定电池是否在充电,返回值是 true

  •     chargingtime —— (数值)电池完全充满电量所需的时间(单位:秒)

    当电池完全被充满电时,或者系统不存在电池时,这个值为0。

    如果系统不在充电,或者无法确定完全充满电所需时间,这个值为∞(无穷大)。

  •     dischargingtime —— 和chargingtime相似,(数值)到电池完全放电直到系统休眠剩余的时间(单位:秒)

    如果放电时间无法确定,或 系统没有电池 或 系统正在充电,这个值为 ∞ (无穷大)

  •     level —— (数值) 设备当前电量等级。取值在(0 ~ 1.0)区间,与剩余电量百分比对应。

    1.0表示电池完全充满电,或者不存在电池,或者数值无法确定。


检测电池事件

上述所有属性都与一个电池事件绑定。这些事件用来指示电池状态的变化。比如,插入电源会使charging属性从false变为true。全部四种电池事件如下所列:

  •     chargingchange —— 这个类型的事件会在charging属性改变时触发。这个事件可以被 onchargingchange()事件处理器捕获和处理。
        chargingtimechange —— 这个类型的事件会在chargingtime属性改变时触发。这个事件可以被 onchargingtimechange()事件处理器捕获和处理。
        dischargingtimechange —— 这个类型的事件会在dischargingtime属性改变时触发。这个事件可以被 ondischargingtimechange()事件处理器捕获和处理。
        levelchange —— 这个类型的事件会在level属性改变时触发。这个事件可以被 onlevelchange()事件处理器捕获和处理。

 
示例页面

下面的代码展示了如何使用 电池状态api 的属性和事件。

示例页面显示了api的各个属性值,并且在事件触发时更新它们的值。

访问在线示例。
 

xml/html code复制内容到剪贴板
  1. <!doctype html>  
  2. <htmllanghtmllang="en">  
  3. <head>  
  4.   <title>the battery status api - example</title>  
  5.   <metacharsetmetacharset="utf-8"/>  
  6.   <script>  
  7.     window.addeventlistener("load", function() {   
  8.       var battery = navigator.battery || navigator.mozbattery;   
  9.       function displaybatterystats() {   
  10.         document.getelementbyid("charging").textcontent = (battery.charging) ? "charging" : "not charging";   
  11.         document.getelementbyid("chargingtime").textcontent = battery.chargingtime;   
  12.         document.getelementbyid("dischargingtime").textcontent = battery.dischargingtime;   
  13.         document.getelementbyid("level").textcontent = battery.level * 100;   
  14.       }   
  15.       if (battery) {   
  16.         displaybatterystats();   
  17.         battery.addeventlistener("chargingchange", displaybatterystats, false);   
  18.         battery.addeventlistener("chargingtimechange", displaybatterystats, false);   
  19.         battery.addeventlistener("dischargingtimechange", displaybatterystats, false);   
  20.         battery.addeventlistener("levelchange", displaybatterystats, false);   
  21.       } else {   
  22.         document.getelementbyid("stats").textcontent = "sorry, your browser does not support the battery status api";   
  23.       }   
  24.     }, false);   
  25.   </script>  
  26. </head>  
  27. <body>  
  28.   <dividdivid="stats">  
  29.     your battery is currently <spanidspanid="charging"></span>.<br/>  
  30.     your battery will be charged in <spanidspanid="chargingtime"></span> seconds.<br/>  
  31.     your battery will be discharged in <spanidspanid="dischargingtime"></span> seconds.<br/>  
  32.     your battery level is <spanidspanid="level"></span>%.   
  33.   </div>  
  34. </body>  
  35. </html>  

结论

本文为battery status api给出了一个完整的总结和展示,尽管其仍未得到主流支持,但是这只是时间问题。考虑到移动互联网的激增,开发者应该尽快将电池信息纳入设计范畴内。