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