两种方式,一个主动获取,一个被动回调。Unity安卓交互使用之前说到的方式:Unity Android交互
public int GetBatteryData()
{
BatteryManager manager = (BatteryManager)context.getSystemService(BATTERY_SERVICE);
return manager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);///当前电量百分比
}
主动获取函数,返回的是一个电量的百分比值整数。
@Override
public void Init(Context context, CallUnity callback) {
super.Init(context, callback);
this.context = context;
_callBack = callback;
mBatInfoReveiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//如果捕捉到的Action是ACTION_BATTERY_CHANGED则运行onBatteryInforECEIVER()
if(intent.ACTION_BATTERY_CHANGED.equals(action))
{
//获得当前电量
intLevel = intent.getIntExtra("level",0);
//获得手机总电量
intScale = intent.getIntExtra("scale",100);
// 在下面会定义这个函数,显示手机当前电量
_callBack.FloatCallBack(intLevel/ intScale);
}
}
};
context.registerReceiver(mBatInfoReveiver, new IntentFilter(
Intent.ACTION_BATTERY_CHANGED));
}
注册监听,回调给Unity。
如果主动获取的话,需要再Unity中定时获取一次,比较麻烦。因为我只在程序启动的时候主动获取一次,其他的时候就等待回调。