Android有三种广播状态,电量低,电量充足,电量发生变化。 Action是:
Intent.ACTION_BATTERY_CHANGE Intent.ACTION_BATTERY_LOW Intent.ACTION_BATTERY_OKAY
Android插拔电源广播Action是:
Intent.ACTION_POWER_CONNECTED Intent.ACTION_POWER_DISCONNECTED
示例代码:
public class BatteryListener { private Context mContext; private BatteryBroadcastReceiver receiver; private BatteryStateListener mBatteryStateListener; public BatteryListener(Context context) { mContext = context; receiver = new BatteryBroadcastReceiver(); } public void register(BatteryStateListener listener) { mBatteryStateListener = listener; if (receiver != null) { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LOW); filter.addAction(Intent.ACTION_BATTERY_OKAY); filter.addAction(Intent.ACTION_POWER_CONNECTED); filter.addAction(Intent.ACTION_POWER_DISCONNECTED); mContext.registerReceiver(receiver, filter); } } public void unregister() { if (receiver != null) { mContext.unregisterReceiver(receiver); } } private class BatteryBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String acyion = intent.getAction(); switch (acyion) { case Intent.ACTION_BATTERY_CHANGED:///电量变化 if (mBatteryStateListener != null) { Log.e("zhang", "BatteryBroadcastReceiver --> onReceive--> ACTION_BATTERY_CHANGED"); mBatteryStateListener.onStateChanged(); } break; case Intent.ACTION_BATTERY_LOW://电量低 if (mBatteryStateListener != null) { Log.e("zhang", "BatteryBroadcastReceiver --> onReceive--> ACTION_BATTERY_LOW"); mBatteryStateListener.onStateLow(); } break; case Intent.ACTION_BATTERY_OKAY:///充满电量 if (mBatteryStateListener != null) { Log.e("zhang", "BatteryBroadcastReceiver --> onReceive--> ACTION_BATTERY_OKAY"); mBatteryStateListener.onStateOkay(); } break; case Intent.ACTION_POWER_CONNECTED:///打开电源 if (mBatteryStateListener != null) { Log.e("zhang", "BatteryBroadcastReceiver --> onReceive--> ACTION_POWER_CONNECTED"); mBatteryStateListener.onStatePowerConnected(); } break; case Intent.ACTION_POWER_DISCONNECTED:///拔出电源 if (mBatteryStateListener != null) { Log.e("zhang", "BatteryBroadcastReceiver --> onReceive--> ACTION_POWER_DISCONNECTED"); mBatteryStateListener.onStatePowerDisconnected(); } break; } } } } public interface BatteryStateListener { public void onStateChanged(); public void onStateLow(); public void onStateOkay(); public void onStatePowerConnected(); public void onStatePowerDisconnected(); } }
MainActivity中调用:
public class MainActivity extends AppCompatActivity { private BatteryListener listener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listener = new BatteryListener(this); listener.register(new BatteryListener.BatteryStateListener() { @Override public void onStateChanged() { Log.e("zhang", "MainActivity --> onStateChanged--> "); } @Override public void onStateLow() { Log.e("zhang", "MainActivity --> onStateLow--> "); Toast.makeText(MainActivity.this, "onStateLow", Toast.LENGTH_SHORT).show(); } @Override public void onStateOkay() { Log.e("zhang", "MainActivity --> onStateOkay--> "); Toast.makeText(MainActivity.this, "onStatekay", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatePowerConnected() {
Log.e("zhang", "MainActivity --> onStatePowerConnected--> ");
Toast.makeText(MainActivity.this, "onStatePowerConnected", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatePowerDisconnected() {
Log.e("zhang", "MainActivity --> onStatePowerDisconnected--> ");
Toast.makeText(MainActivity.this, "onStatePowerDisconnected", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
if (listener != null) {
listener.unregister();
}
super.onDestroy();
}
}
文章来源:https://blog.csdn.net/qq_33689414/article/details/53769800