博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

025、WiFi服务

Posted on 2013-09-27 21:56  mz_zyh  阅读(532)  评论(0编辑  收藏  举报
WiFi的打开与关闭
WiFiManager状态常数及意义
 
WifiManager状态常数 意义
WifiManager.WIFI_STATE_ENABLED wifi已经打开
WifiManager.WIFI_STATE_ENABLING wifi打开中
WifiManager.WIFI_STATE_DISABLING wifi关闭中
WifiManager.WIFI_STATE_DISABLED wifi已经关闭
WifiManager.WIFI_STATE_UNKNOWN 未知的Wifi状态
 
 
通过WiFiManager打开WiFi,mWiFiManager.setWifiEnabled(true)的状态变化过程:
1、WifiManager.WIFI_STATE_DISABLED
2、WifiManager.WIFI_STATE_ENABLING
3、WifiManager.WIFI_STATE_ENABLED
 
 
通过WiFiManager关闭WiFi,mWiFiManager.setWifiEnabled(false)的状态变化过程:
1、WifiManager.WIFI_STATE_ENABLED
2、WifiManager.WIFI_STATE_DISABLING
3、WifiManager.WIFI_STATE_DISABLED
 
 
如果状态处于WIFI_STATE_ENABLING时,运行一次“打开”功能,将导致错误,因此,程序必须对这类的事件状态进行捕捉,否则,就不知道WiFi究竟何时可以打开完毕,而手机与WiFi AP的连接也有访问的时间,并非是马上单击就能立即反应其打开结果。
 
必须加权限:
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

 

代码如下:
 
       cb.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                if (cb.isChecked()) {
                    // 尝试打开wifi服务
                    try {
                        if (!wifiManager.isWifiEnabled()
                                && wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING) {
                            // wifi没有打开,并且没有处于打开过程中
                            if (wifiManager.setWifiEnabled(true)) {
                                tv.setText(getResources().getString(
                                        R.string.str_start_wifi_done));
                                cb.setText(getResources().getString(
                                        R.string.str_checked));
                            } else {
                                tv.setText(getResources().getString(
                                        R.string.str_start_wifi_failed));
                                cb.setText(getResources().getString(
                                        R.string.str_uncheck));
                                cb.setChecked(false);
                            }
                        } else {
                            int strId;
                            switch (wifiManager.getWifiState()) {
                            case WifiManager.WIFI_STATE_ENABLING:
                                // wifi正在打开中...
                                strId = R.string.str_wifi_enabling;
                                break;
                            case WifiManager.WIFI_STATE_DISABLING:
                                // wifi正在关闭中...
                                strId = R.string.str_wifi_disabling;
                                break;
                            case WifiManager.WIFI_STATE_ENABLED:
                                // wifi已经关闭
                                strId = R.string.str_wifi_enabled;
                                break;
                            case WifiManager.WIFI_STATE_UNKNOWN:
                                // wifi状态没有
                            default:
                                strId = R.string.str_wifi_unknow;
                                break;
                            }
                            tv.setText(getResources().getString(
                                    R.string.str_start_wifi_failed)
                                    + "::" + getResources().getString(strId));
                            cb.setText(getResources().getString(
                                    R.string.str_checked));
                            cb.setChecked(false);
                        }
                    } catch (Exception e) {
                        Log.e("zyh", e.toString());
                    }
                } else {
                    // 尝试关闭wifi服务
                    try {
                        // 判断wifi状态是否已经启动
                        if (wifiManager.isWifiEnabled()) {
                            // 关闭wifi
                            if (wifiManager.setWifiEnabled(false)) {
                                tv.setText(getResources().getString(
                                        R.string.str_stop_wifi_done));
                                cb.setText(getResources().getString(
                                        R.string.str_uncheck));
                            } else {
                                tv.setText(getResources().getString(
                                        R.string.str_stop_wifi_failed));
                                cb.setText(getResources().getString(
                                        R.string.str_checked));
                                cb.setChecked(true);
                            }
                        } else {
                            int strId;
                            switch (wifiManager.getWifiState()) {
                            case WifiManager.WIFI_STATE_ENABLING:
                                // wifi正在打开中...
                                strId = R.string.str_wifi_enabling;
                                break;
                            case WifiManager.WIFI_STATE_DISABLING:
                                // wifi正在关闭中...
                                strId = R.string.str_wifi_disabling;
                                break;
                            case WifiManager.WIFI_STATE_DISABLED:
                                // wifi已经关闭
                                strId = R.string.str_wifi_disabled;
                                break;
                            case WifiManager.WIFI_STATE_UNKNOWN:
                                // wifi状态没有
                            default:
                                strId = R.string.str_wifi_unknow;
                                break;
                            }
                            tv.setText(getResources().getString(
                                    R.string.str_stop_wifi_failed)
                                    + "::" + getResources().getString(strId));
                            cb.setText(getResources().getString(
                                    R.string.str_uncheck));
                            cb.setChecked(true);
                        }
                    } catch (Exception e) {
                        Log.e("zyh", e.toString());
                    }
                }
            }
        });

 

 
 
扫描附件可用WiFi:
                // 设置WifiConfiguration对象
                List<WifiConfiguration> configuredNetworks = wifiManager
                        .getConfiguredNetworks();
                if (configuredNetworks != null && configuredNetworks.size() > 0) {
                    ((ListView) findViewById(R.id.lv))
                            .setAdapter(new MyAdapter(MainActivity.this,
                                    configuredNetworks));
                } else {
                    Toast.makeText(MainActivity.this, "没有可用wifi", 0).show();
                }