阅读(3007) (8)

百度智能小程序 获取当前设备电量同步接口

2020-08-13 16:22:34 更新

swan.getBatteryInfoSync

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

解释: 获取当前设备电量同步接口,ios 系统不可用。Web 态说明:受浏览器限制,Web 态不支持同步获取当前设备电量,调用该方法会抛出一个标准的Error对象。

方法参数

返回值说明

参数名类型说明

level

String

设备电量,范围为 1-100 。

isCharging

Boolean

设备是否正在充电

示例 

在开发者工具中打开


图片示例

代码示例

<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 = '暂无';
            }
        }
    }
});

Bug & Tip

  • Tip:iOS 不可用时,返回值 level 为 100, isCharging 为 true 。
  • Tip:基础库 3.140.1 之前,无法判断接口是否调用失败;基础库 3.140.1 及以后,接口调用失败时会返回一个标准的Error对象,可通过instanceof来判断接口是否调用失败。