移动设备的 份额 在网络流量中在大量增长,其所贡献的网络流量非常庞大,以至于为了移动设备,我们单独创建了一些API和设计理念。一个非常典型的例子是 W3C 电池 状态API,它允许一个应用程序获知设备的 电 池状态信息。这篇 文章 探索 了这个新的API,为你展示了如何把它整合进你现有的应用程序。
&nbs p; 检测设备 是否 支持
目前电池API依旧没有得到主流支持。因此,在使用这个API前需要确认当前设备是否支持此API。下面展示的函数返回一个布恩值(True/False),指示当前浏览器是否支持电池状态API。
该函数首先检测了 navigator.battery 对象是否存在。如果不存在,继续检测 Mozilla 专用的
navigator.mozBattery是否存在。我曾经见过有些代码还检测了 webkit Battery对象,但是我无法证实其在Ch rom e中是否存在。
参考文档:https://develo PE r.mozilla. org /en-US/docs/DOM/window.navigator.battery
XM L/HT ML Code 复制内容到剪贴板
functionisBattery stat usSupported() { return!!(navigator.battery || navigator.mozBattery); }
检查电池
如果电池对象存在,它会包含下列四个只读属性。
ch arg ing —— (布恩值)指示系统的电池当前是否正在充电。如果系统不存在电池,或无法确定电池是否在充电,返回值是 True
char gin gTime —— (数值)电池完全充满电量所需的时间(单位:秒)当电池完全被充满电时, 或者 系统不存在电池时,这个值为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 复制内容到剪贴板
<!DOCTYPE html > < htmllang @H_924_ 126 @htmllang = "en" > < head > < t IT le > The Battery Status API - Ex am ple </ title > < metacharset metacharset = "UTF-8" /> < script > window.addEventListener("load", function() { VAR battery = navigator .battery || navigator.mozBattery; function dis play BatteryStats() { 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 br owser does not support the Battery Status API" ; } }, false); </ script > </ head > < body > < divid divid = "stats" > Your battery is current ly < spanid spanid = "charging" > </ span > . < br /> Your battery will be charged in < spanid spanid = "chargingtime" > </ span > seconds. < br /> Your battery will be discharged in < spanid spanid = "dischargingtime" > </ span > seconds. < br /> Your battery level is < spanid spanid = "level" > </ span > %. </ div > </ body > </ html >
结论
本文为Battery Status API给出了一个完整的总结和展示,尽管其仍未得到主流支持,但是这只是时间问题。考虑到移动 互联网 的激增, 开发者 应该 尽快将电池信息纳入设计范畴内。
总结
以上是 为你收集整理的 HTML5的一个显示电池状态的API简介 全部内容,希望文章能够帮你解决 HTML5的一个显示电池状态的API简介 所遇到的问题。
如果觉得 网站内容还不错, 推荐好友。
查看更多关于HTML5的一个显示电池状态的API简介的详细内容...