HTML5的一个显示电池状态的API简介
移动设备的份额在网络流量中在大量增长,其所贡献的网络流量非常庞大,以至于为了移动设备,我们单独创建了一些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
- functionisbatterystatussupported() {
- return!!(navigator.battery || navigator.mozbattery);
- }
检查电池
如果电池对象存在,它会包含下列四个只读属性。
- 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的各个属性值,并且在事件触发时更新它们的值。
访问在线示例。
- <!doctype html>
- <htmllanghtmllang="en">
- <head>
- <title>the battery status api - example</title>
- <metacharsetmetacharset="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>
- <dividdivid="stats">
- your battery is currently <spanidspanid="charging"></span>.<br/>
- your battery will be charged in <spanidspanid="chargingtime"></span> seconds.<br/>
- your battery will be discharged in <spanidspanid="dischargingtime"></span> seconds.<br/>
- your battery level is <spanidspanid="level"></span>%.
- </div>
- </body>
- </html>
结论
本文为battery status api给出了一个完整的总结和展示,尽管其仍未得到主流支持,但是这只是时间问题。考虑到移动互联网的激增,开发者应该尽快将电池信息纳入设计范畴内。
下一篇: Vue 无限滚动加载指令实现方法
推荐阅读
-
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
-
HTML5的一个显示电池状态的API简介
-
使用HTML5 Canvas API控制字体的显示与渲染的方法
-
借助HTML5 Canvas API制作一个简单的猜字游戏
-
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
-
HTML5的一个显示电池状态的API简介
-
使用HTML5 Canvas API控制字体的显示与渲染的方法
-
借助HTML5 Canvas API制作一个简单的猜字游戏
-
Android实现侦听电池状态显示、电量及充电动态显示的方法
-
php处理数据库数据,每处理一个数据返回客户端显示当前状态的方法。,数据库当前状态