swan.getBatteryInfo

基础库 3.30.2 开始支持,低版本需做兼容处理。

解释:支持在小程序内获取当前设备电量。
Web 态说明:由于浏览器对于 W3C 规范的实现差异,getBatteryInfo 功能仅在 Android 的部分浏览器下可用,对于不支持的浏览器调用该 API 失败会触发 fail 回调。

# 方法参数

Object object

# object 参数说明

属性名 类型 必填 默认值 说明
success Function 接口调用成功的回调
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

# success 回调函数参数

参数名 类型 说明
level string 设备电量, 范围为 1-100
isCharging boolean 设备是否正在充电

# 示例

扫码体验
重新加载
请使用百度APP扫码

# 图片示例

# 代码示例

    <view class="wrap">
        <view class="card-area">
            <view class="list-area border-bottom" s-for="item in infoList">
                <text class="list-item-key-4">{{item.chineseName}}</text>
                <text class="list-item-value">{{item.value}}</text>
            </view>
            <view class="button-group">
                <button bind:tap="getBatteryInfo" type="primary" hover-stop-propagation="true">获取电量信息</button>
            </view>
        </view>
    </view>
    
    Page({
        data: {
            infoList: [{
                engName: 'level',
                chineseName: '电量',
                value: ''
            }, {
                engName: 'isCharging',
                chineseName: '是否充电中',
                value: ''
            }]
        },
        getBatteryInfo() {
            swan.getBatteryInfo({
                success: res => {
                    console.log('getBatteryInfo success', res);
                    this.updateInfoList(res);
                },
                fail: err => {
                    console.log('getBatteryInfo fail', err);
                }
            });
        },
        // 同步写法
        // getBatteryInfoSync() {
        //     let res = swan.getBatteryInfoSync();
        //     // 基础库 3.140.1 之前,无法判断接口是否调用失败
        //     // 基础库 3.140.1 及以后,通过 instanceof 来判断接口是否调用失败
        //     if (!(res instanceof Error)) {
        //         console.log('当前设备电量值:', res.level);
        //         console.log('当前设备是否正在充电:', res.isCharging);
        //         this.updateInfoList(res);
        //     }
        //     else {
        //         console.log('getBatteryInfoSync fail', res.errMsg || res.message);
        //     }
        // },
        updateInfoList(res) {
            let infoList = this.data.infoList;
            infoList[0].value = res.level + '%';
            if (res.isCharging === true) {
                infoList[1].value = '是';
            }
            else {
                infoList[1].value = '否';
            }
            this.setData('infoList', infoList);
            for (let item of infoList) {
                if (!res[item.engName]) {
                    item.value = '暂无';
                }
            }
        }
    });