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监听电池状态的实例代码,本文写的不好还请见谅,有好的意见欢迎给小编留言,我会及时给大家沟通的,谢谢大家一直以来对毛票票网站的支持!