Android电量和插拔电源状态广播监听
16lz
2021-12-04
Android电量和插拔电源状态广播监听
Android电量广播状态有3种,电量低,电量充满,电量发生改变。
Action是:
Intent.ACTION_BATTERY_CHANGEIntent.ACTION_BATTERY_LOWIntent.ACTION_BATTERY_OKAY
Android的插拔电源广播的Action是:
Intent.ACTION_POWER_CONNECTEDIntent.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, "onStateOkay", 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(); }}
更多相关文章
- Android(安卓)系统广播Action一览验证
- 短信的自动拦截
- android Widget-显示电量
- 【android】监听网络变化连续多个广播的问题解决
- Android(安卓)电源系列小结s
- Android(安卓)Wifi相关广播 -- WIFI_STATE_CHANGED_ACTION
- Android(安卓)监听wifi广播的两种方式
- Android电源管理,低电量报警
- 我今天的面试题,注册广播有几种方式,这些方式有何优缺点?请谈谈Andr