安卓實時監測充電狀態

最近項目中遇到一個需求,實時監測手機是否接通電源,大概效果如下:

如果拔掉電源上圖對號就隱藏

怎麼實現呢,第一想到的就是使用廣播來進行監聽,代碼如下:

/**
 * 充電檢測
 */
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();
}

}
   /**
    * 使用
    */
    
   BatteryListener listener = new BatteryListener(this);
        listener.register(new BatteryListener.BatteryStateListener() {
            @Override
            public void onStateChanged() { //電量發生改變
            }

            @Override
            public void onStateLow() { //電量低

            }

            @Override
            public void onStateOkay() { //電量充滿

            }

            @Override
            public void onStatePowerConnected() { //接通電源
                charge_true.setVisibility(View.VISIBLE);
            }

            @Override
            public void onStatePowerDisconnected() { //拔出電源
                charge_true.setVisibility(View.GONE);
            }
        });

以上就是全部的實現,特此寫一篇帖子記錄,方便以後使用,希望可以給遇到同樣需求的同學帶來幫助。

會不定時更新安卓相關知識,喜歡的給點一下關注,感謝大家支持!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章