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工程調式查看了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章