Real-time monitoring of the phone's battery power and boot-up capability in the Android system is achieved through the Broadcastreceiver component. We can dynamically register an instance of this class through the Context.registerreceiver () method or statically register through <Receiver> tag in androidmanifest. Xml. Note: If we register a receiver in the activity.onresume () implementation, we should unregister the activity in the activity life cycle of the OnPause method. (This will reduce unnecessary system overhead). Remember that you cannot unregister the activity at Onsaveinstancestate () because this method will not be started until the user returns to the history stack. Below we use the dynamic registration Broadcastreceiver to realize the power monitoring.
(1) Adding permissions in the manifest file
<uses-permission android:name= "Android.permission.BATTERY_STATS"/>
(2) Register to cancel receiver during activity life cycle
@Overrideprotected void Onresume () {//TODO auto-generated method Stubsuper.onresume (); reciver=new Batterybroadcastreciver ();//Create a filter intentfilter intentfilter=new intentfilter (intent.action_battery_changed); Registerreceiver (Reciver, intentfilter);} @Overrideprotected void OnPause () {//TODO auto-generated method Stubsuper.onpause (); Unregisterreceiver (reciver);}
(3) Inherit Broadcastreceiver interface
public class Batterybroadcastreciver extends broadcastreceiver{
@Override
public void OnReceive (context context, Intent Intent) {
TODO auto-generated Method Stub
if (Intent.getaction (). Equals (intent.action_battery_changed)) {
Get the current power of the system
int Level=intent.getintextra ("level", 0);
Get Total system power
int Total=intent.getintextra ("scale", 100);
Textview.settext ("Current charge:" + (level*100)/total+ "%");
Triggered when the charge is less than 15%
if (level<15) {
Toast.maketext (Mainactivity.this, "current charge is less than 15%", Toast.length_long). Show ();
}
}
}
}