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();    }}

更多相关文章

  1. Android(安卓)系统广播Action一览验证
  2. 短信的自动拦截
  3. android Widget-显示电量
  4. 【android】监听网络变化连续多个广播的问题解决
  5. Android(安卓)电源系列小结s
  6. Android(安卓)Wifi相关广播 -- WIFI_STATE_CHANGED_ACTION
  7. Android(安卓)监听wifi广播的两种方式
  8. Android电源管理,低电量报警
  9. 我今天的面试题,注册广播有几种方式,这些方式有何优缺点?请谈谈Andr

随机推荐

  1. android M 运行时权限申请流程
  2. android的Application使用
  3. Android CountDownTimer倒计时器的使用
  4. ADT下载地址(含各版本),最新ADT-23.0.6
  5. android没有插SD卡/TF卡(TF卡其实就是micr
  6. 关于android的ListView的getCheckItemIds
  7. Android数据存储-->SharedPreferences
  8. Android display架构分析-SW架构分析(1-8
  9. Android学习之 VideoView,SurfaceView
  10. Android几种异步的实现