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