Android监听电池状态实例代码
如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类
具体代码如下所示:
packagecom.example.charginganimation;
importandroid.app.Activity;
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.content.IntentFilter;
importandroid.os.BatteryManager;
importandroid.os.Bundle;
importandroid.view.View;
publicclassMainActivityextendsActivity{
privateCustomClipLoadingccl;
privateBatteryChangedReceiverreceiver=newBatteryChangedReceiver();
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerReceiver(receiver,getFilter());
}
privateIntentFiltergetFilter(){
IntentFilterfilter=newIntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.addAction(Intent.ACTION_BATTERY_LOW);
filter.addAction(Intent.ACTION_BATTERY_OKAY);
returnfilter;
}
@Override
protectedvoidonDestroy(){
//TODOAuto-generatedmethodstub
unregisterReceiver(receiver);
super.onDestroy();
}
classBatteryChangedReceiverextendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//TODOAuto-generatedmethodstub
finalStringaction=intent.getAction();
if(action.equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED)){
System.out
.println("BatteryChangedReceiverBATTERY_CHANGED_ACTION---");
//当前电池的电压
intvoltage=intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,
-1);
//电池的健康状态
inthealth=intent
.getIntExtra(BatteryManager.EXTRA_HEALTH,-1);
switch(health){
caseBatteryManager.BATTERY_HEALTH_COLD:
System.out.println("BATTERY_HEALTH_COLD");
break;
caseBatteryManager.BATTERY_HEALTH_DEAD:
System.out.println("BATTERY_HEALTH_DEAD");
break;
caseBatteryManager.BATTERY_HEALTH_GOOD:
System.out.println("BATTERY_HEALTH_GOOD");
break;
caseBatteryManager.BATTERY_HEALTH_OVERHEAT:
System.out.println("BATTERY_HEALTH_OVERHEAT");
break;
caseBatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
System.out.println("BATTERY_HEALTH_COLD");
break;
caseBatteryManager.BATTERY_HEALTH_UNKNOWN:
System.out.println("BATTERY_HEALTH_UNKNOWN");
break;
caseBatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
System.out.println("BATTERY_HEALTH_UNSPECIFIED_FAILURE");
break;
default:
break;
}
//电池当前的电量,它介于0和EXTRA_SCALE之间
intlevel=intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
//电池电量的最大值
intscale=intent.getIntExtra(BatteryManager.EXTRA_SCALE,-1);
//当前手机使用的是哪里的电源
intpluged=intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,
-1);
switch(pluged){
caseBatteryManager.BATTERY_PLUGGED_AC:
//电源是ACcharger.[应该是指充电器]
System.out.println("BATTERY_PLUGGED_AC");
break;
caseBatteryManager.BATTERY_PLUGGED_USB:
//电源是USBport
System.out.println("BATTERY_PLUGGED_USB");
break;
default:
break;
}
intstatus=intent
.getIntExtra(BatteryManager.EXTRA_STATUS,-1);
switch(status){
caseBatteryManager.BATTERY_STATUS_CHARGING:
//正在充电
System.out.println("BATTERY_STATUS_CHARGING");
break;
caseBatteryManager.BATTERY_STATUS_DISCHARGING:
System.out.println("BATTERY_STATUS_DISCHARGING");
break;
caseBatteryManager.BATTERY_STATUS_FULL:
//充满
System.out.println("BATTERY_STATUS_FULL");
break;
caseBatteryManager.BATTERY_STATUS_NOT_CHARGING:
//没有充电
System.out.println("BATTERY_STATUS_NOT_CHARGING");
break;
caseBatteryManager.BATTERY_STATUS_UNKNOWN:
//未知状态
System.out.println("BATTERY_STATUS_UNKNOWN");
break;
default:
break;
}
//电池使用的技术。比如,对于锂电池是Li-ion
Stringtechnology=intent
.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
//当前电池的温度
inttemperature=intent.getIntExtra(
BatteryManager.EXTRA_TEMPERATURE,-1);
System.out.println("voltage="+voltage+"technology="
+technology+"temperature="+temperature
+"level="+level+"scale="+scale);
}elseif(action.equalsIgnoreCase(Intent.ACTION_BATTERY_LOW)){
//表示当前电池电量低
System.out
.println("BatteryChangedReceiverACTION_BATTERY_LOW---");
}elseif(action.equalsIgnoreCase(Intent.ACTION_BATTERY_OKAY)){
//表示当前电池已经从电量低恢复为正常
System.out
.println("BatteryChangedReceiverACTION_BATTERY_OKAY---");
}
}
}
}
获取apk和版本信息
privateintgetVerCode(Contextcontext){
intverCode=-1;
try{
verCode=context.getPackageManager().getPackageInfo(
"com.example.charginganimation",0).versionCode;
}catch(NameNotFoundExceptione){
e.printStackTrace();
}
returnverCode;
}
privateStringgetVerName(Contextcontext){
StringverName="";
try{
verName=context.getPackageManager().getPackageInfo(
"com.example.charginganimation",0).versionName;
}catch(NameNotFoundExceptione){
e.printStackTrace();
}
returnverName;
}
以上代码内容是小编给大家介绍的android监听电池状态的实例代码,本文写的不好还请见谅,有好的意见欢迎给小编留言,我会及时给大家沟通的,谢谢大家一直以来对毛票票网站的支持!