个性化阅读
专注于IT技术分析

JavaScript Battery API简介

点击下载

本文概述

在不知道设备电池状态的情况下, 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并不是相对较新,

Navigator.getBattery兼容性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。

赞(0)
未经允许不得转载:srcmini » JavaScript Battery API简介

评论 抢沙发

评论前必须登录!