本文概述
在不知道设备电池状态的情况下, Web开发人员必须在设计Web应用程序时假设电池电量足以应付当前任务。这意味着设备的电池可能比期望的更快耗尽, 因为Web开发人员无法根据电池状态做出决定。
¿在编写Web应用程序时, 你是否关心电池的任务?请在评论框中与社区分享你的答案。
在许多情况下, 此API可能有用:
- 这可用于调整应用程序的资源使用情况, 以减少电池电量不足时的电池消耗。
- 为了防止数据丢失, 请在电池用完之前保存诸如编辑器之类的更改。
- 在你的应用中创建一个很酷的小部件, 以向用户显示电池状态。
让我们开始吧 !
检查可用性
要检查浏览器中是否提供了电池API, 请使用以下任何if语句:
if(typeof(navigator.getBattery) != "undefined"){
console.log("Available");
}
// Or
if("getBattery" in navigator){
console.log("Available");
}
尽管Battery API并不是相对较新,
资料来源:我可以使用。
而且不, 此API没有可用的polyfill, 你如何对需要访问硬件的东西进行polyfill?
你需要了解的所有关于API的信息
要使用Battery API, 请使用以下代码段:
navigator.getBattery().then(function(battery){
console.log(battery.charging); // Boolean
console.log(battery.chargingTime); // Infinity
console.log(battery.dischargingTime); // Infinity
console.log(battery.level ); // Float (0 to 1)
});
Battery API返回一个本机Promise, 这意味着这是一个异步方法(在此处了解有关javascript promise的更多信息)。
Battery API提供有关系统电池电量水平的信息, 并让你在电池电量水平或充电状态更改后发送的事件通知你。
- 充电属性表示系统电池的充电状态。
- ChargeTime属性表示系统电池充满电之前剩余的时间(以秒为单位)。
- dischargeTime属性表示以秒为单位的时间, 直到系统电池完全放电并且系统将要挂起为止
- 级别属性表示系统电池的级别。
该API另外提供4个事件以检查属性何时更改。
事件处理程序 | 事件处理程序事件类型 |
---|---|
充电变化 | 收费变化 |
充电时间变化 | 充电时间变化 |
放电时间变化 | 放电时间变化 |
等级变化 | 水平变化 |
你可以使用轻松添加侦听器:
navigator.getBattery().then(function(battery){
battery.onlevelchange = function(){
alert("The battery level has changed");
};
// Or
battery.addEventListener("levelchange", function(){
alert("The battery level has changed");
}, false);
});
如何检查你是否使用台式计算机
尽管这没有任何意义, 但台式机也可以使用电池API, 并且无法知道用户使用的是笔记本电脑还是台式机, 但是可以使用以下代码片段进行”设置”。
你可以检查是否正在使用台式计算机, 检查dischargeTime属性是否是有限的, 并检查chargeing属性是否设置为true。
navigator.getBattery().then(function(battery){
var desktopOrLaptopConnectedInfo = function(_battery){
if((_battery.charging === true) && !isFinite(_battery.dischargingTime)){
console.log("Desktop detected");
}
// or
//if((data.charging === true) && (data.dischargingTime == Infinity)){
// console.log("Desktop detected");
//}
};
// And you may want to check when again if is a laptop and the
// charging property changes
battery.addEventListener('chargingchange', function(){
desktopOrLaptopConnectedInfo(battery);
});
});
可惜的是, 如果用户使用笔记本电脑并断开了充电器的连接, 则该假设将失败, 并且你需要添加chargerchange侦听器以再次检查。
注意:你可以在if语句中检查level属性等于1(这表示”电池”已充满电), 以提高准确性, 因为属性ChargeTime和dischargeTime始终等于Infinity。
评论前必须登录!
注册