importClass(android.content.IntentFilter);
importClass(android.os.BatteryManager);
let?BatteryN;?//目前電量
let?BatteryV;?//電池電壓
let?BatteryT;?//電池溫度
let?BatteryStatus;?//電池狀態
let?BatteryTemp;?//電池使用情況
let?mBatInfoReceiver?=?new?JavaAdapter(android.content.BroadcastReceiver,?{
onReceive:?function?(context,?intent)?{
log(intent);
let?action?=?intent.getAction();
/*
?*?如果捕捉到的action是ACTION_BATTERY_CHANGED,?就運行onBatteryInfoReceiver()
?*/
if?(Intent.ACTION_BATTERY_CHANGED.equals(action))?{
BatteryN?=?intent.getIntExtra("level",?0);?//目前電量
BatteryV?=?intent.getIntExtra("voltage",?0);?//電池電壓
BatteryT?=?intent.getIntExtra("temperature",?0);?//電池溫度
switch?(intent.getIntExtra("status",?BatteryManager.BATTERY_STATUS_UNKNOWN))?{
case?BatteryManager.BATTERY_STATUS_CHARGING:
BatteryStatus?=?"充電狀態";
break;
case?BatteryManager.BATTERY_STATUS_DISCHARGING:
BatteryStatus?=?"放電狀態";
break;
case?BatteryManager.BATTERY_STATUS_NOT_CHARGING:
BatteryStatus?=?"未充電";
break;
case?BatteryManager.BATTERY_STATUS_FULL:
BatteryStatus?=?"充滿電";
break;
case?BatteryManager.BATTERY_STATUS_UNKNOWN:
BatteryStatus?=?"未知道狀態";
break;
}
switch?(intent.getIntExtra("health",?BatteryManager.BATTERY_HEALTH_UNKNOWN))?{
case?BatteryManager.BATTERY_HEALTH_UNKNOWN:
BatteryTemp?=?"未知錯誤";
break;
case?BatteryManager.BATTERY_HEALTH_GOOD:
BatteryTemp?=?"狀態良好";
break;
case?BatteryManager.BATTERY_HEALTH_DEAD:
BatteryTemp?=?"電池沒有電";
break;
case?BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
BatteryTemp?=?"電池電壓過高";
break;
case?BatteryManager.BATTERY_HEALTH_OVERHEAT:
BatteryTemp?=?"電池過熱";
break;
}
log(
"目前電量為"?+
BatteryN?+
"%?---?"?+
BatteryStatus?+
"\n"?+
"電壓為"?+
BatteryV?+
"mV?---?"?+
BatteryTemp?+
"\n"?+
"溫度為"?+
BatteryT?*?0.1?+
"℃"
);
}
},
});
//?註冊壹個系統?BroadcastReceiver,作為訪問電池計量之用這個不能直接在AndroidManifest.xml中註冊
let?filter?=?new?IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(mBatInfoReceiver,?filter);
events.on("exit",?function?()?{
unregisterReceiver();
});
function?unregisterReceiver()?{
context.unregisterReceiver(mBatInfoReceiver);
toastLog("關閉廣播監聽");
}
setInterval(function?()?{},?1000);