CocosCreator系列——Java原生获取手机电量及使用状态

CocosCreator系列——Java原生获取手机电量及使用状态

CocosCreator客户端基于2.2.1版本,getBatteryStatusInfo()方法为调用Java原生并返回电量及电池使用状态的方法,3秒钟获取一次(根据自己时实际需求来确定)

cc.Class({
    extends: cc.Component,
    properties: {
        label: {
            default: null,
            type: cc.Label
        },
    },

    // use this for initialization
    onLoad: function () {
        if (cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
            this.schedule(() => {
                this.getBatteryStatusInfo();
            }, 3)
        }
    },
    getBatteryStatusInfo() {
        var batteryInfo = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getBatteryStatusInfo", "()Ljava/lang/String;")
        if (!batteryInfo) {
            cc.log("当前无返回!!!!!!!!!!!!!!!!!!!!!!!!");
            return
        }
        var info = batteryInfo.split("_");
        var level = parseInt(info[0]);
        var scale = parseInt(info[1]);
        var status = info[2];
        this.label.string = "电量剩余:" + (level * 100) / scale + "\t" + "当前电池使用状态状态:" + status;
    }

});

接来下时Java原生平台:
1.声明当前AppActivity

    private static AppActivity app = null;

2.在onCreate()方法中赋值:

app = this;

3.返回给js客户端的电量状态方法,注意要写成静态公开方法

    public static String getBatteryStatusInfo() {
        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        Intent receiver = app.registerReceiver(null, filter);
        int level = receiver.getIntExtra("level", 0); // 获取当前电量
        int scale = receiver.getIntExtra("scale", 0); // 获取总电量
        int status = receiver.getIntExtra("status", 0); // 获取充电状态
        String batteryStatus = " ";
        switch (status) {
            case BatteryManager.BATTERY_STATUS_UNKNOWN:
                batteryStatus = "[没有电池]";
                break;
            case BatteryManager.BATTERY_STATUS_CHARGING:
                batteryStatus = "[正在充电]";
                break;
            case BatteryManager.BATTERY_STATUS_FULL:
                batteryStatus = "[已经充满]";
                break;
            case BatteryManager.BATTERY_STATUS_DISCHARGING:
                batteryStatus = "[放电中]";
                break;
            case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
                batteryStatus = "[未充电]";
                break;
            default:
                batteryStatus = "[未知状态]";
                break;
        }
        StringBuilder info = new StringBuilder();
        info.append(level);
        info.append("_");
        info.append(scale);
        info.append("_");
        info.append(batteryStatus);
        return info.toString();
    }

至此全部完成,可以打开Android studio工程调式查看了。

猜你喜欢

转载自blog.csdn.net/liupengxunzhuanshu/article/details/105725853