zoukankan      html  css  js  c++  java
  • Android 监听 WiFi 开关状态

    Android 监听 WiFi 开关状态

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309
    本文出自【赵彦军的博客】

    • WifiSwitch_Presenter 源码:
    package com.yiba.wifi.sdk.lib.presenter;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.wifi.WifiManager;
    
    /**
     * Created by ${zhaoyanjun} on 2017/3/29.
     * Wifi 开关监听
     */
    
    public class WifiSwitch_Presenter {
        private Context mContext ;
        private Receiver receiver ;
        private WifiSwitch_Interface mInterface ;
    
    
        public WifiSwitch_Presenter( Context context , WifiSwitch_Interface mInterface ){
            this.mContext = context ;
            this.mInterface = mInterface ;
    
            observeWifiSwitch();
        }
    
        private void observeWifiSwitch(){
            IntentFilter filter = new IntentFilter();
            filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
            receiver = new Receiver() ;
            mContext.registerReceiver(receiver, filter);
        }
    
        /**
         * 释放资源
         */
        public void onDestroy(){
            if ( receiver != null ){
                mContext.unregisterReceiver( receiver );
            }
            if (mContext!=null){
                mContext = null;
            }
        }
    
        class Receiver extends BroadcastReceiver {
    
            @Override
            public void onReceive(Context context, Intent intent) {
                int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
                switch (wifiState) {
                    case WifiManager.WIFI_STATE_DISABLED:
                        if (mInterface != null){
                            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_DISABLED);
                        }
                        break;
                    case WifiManager.WIFI_STATE_DISABLING:
                        if (mInterface != null){
                            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_DISABLING);
                        }
                        break;
                    case WifiManager.WIFI_STATE_ENABLED:
                        if (mInterface != null){
                            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_ENABLED);
                        }
                        break;
                    case WifiManager.WIFI_STATE_ENABLING:
                        if ( mInterface != null ) {
                            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_ENABLING);
                        }
                        break;
                    case WifiManager.WIFI_STATE_UNKNOWN:
                        if ( mInterface != null ){
                            mInterface.wifiSwitchState( WifiSwitch_Interface.WIFI_STATE_UNKNOWN );
                        }
                        break;
                }
            }
        }
    }
    
    
    • WifiSwitch_Interface 源码
    package com.yiba.wifi.sdk.lib.presenter;
    
    /**
     * Created by ${zhaoyanjun} on 2017/3/29.
     * Wifi 开关监听
     */
    
    public interface WifiSwitch_Interface {
    
        int WIFI_STATE_ENABLING = 0 ;
        int WIFI_STATE_ENABLED = 1 ;
        int WIFI_STATE_DISABLING = 2 ;
        int WIFI_STATE_DISABLED = 3 ;
        int WIFI_STATE_UNKNOWN  = 4 ;
    
        void wifiSwitchState( int state );
    }
    
    
    • 使用方式 MainActivity :
    package com.yiba.core;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity implements WifiSwitch_Interface {
    
        private WifiSwitch_Presenter wifiSwitch_presenter ;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            wifiSwitch_presenter = new WifiSwitch_Presenter( this , this ) ;
    
        }
    
        @Override
        public void wifiSwitchState(int state) {
            switch ( state ){
                case WifiSwitch_Interface.WIFI_STATE_DISABLED  :
                    Toast.makeText(this, "WiFi 已经关闭", Toast.LENGTH_SHORT).show();
                    break;
                case WifiSwitch_Interface.WIFI_STATE_DISABLING:
                    Toast.makeText(this, "WiFi 正在关闭", Toast.LENGTH_SHORT).show();
                    break;
                case WifiSwitch_Interface.WIFI_STATE_ENABLED  :
                    Toast.makeText(this, "WiFi 已经打开", Toast.LENGTH_SHORT).show();
                    break;
                case WifiSwitch_Interface.WIFI_STATE_ENABLING  :
                    Toast.makeText(this, "WiFi 正在打开", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
    
            //释放资源
            if ( wifiSwitch_presenter != null ){
                wifiSwitch_presenter.onDestroy();
            }
        }
    }
    
    
  • 相关阅读:
    常用集合比较
    windows和centos下安装ActiveMQ
    windows + maven + eclipse
    Eclipse常用插件 + Eclipse快捷键
    Zookeeper + Dubbo + SpringMVC + dubbo-admin
    Hession集成Spring + maven依赖通讯comm项目 + 解决@ResponseBody中文乱码
    Spring结合log4j(slf4j)
    nginx安装配置+集群tomcat:Centos和windows环境
    Manthan, Codefest 18 (rated, Div. 1 + Div. 2) ABCDE
    51nod 1483 化学变化
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/6861316.html
Copyright © 2011-2022 走看看