999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁
  P L C | 變頻器與傳動(dòng) | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動(dòng)控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
收藏本文     查看收藏

安卓版本:4.4.2 運(yùn)行平臺:廣州微嵌安卓工業(yè)平板
這里寫圖片描述
1、安卓使用wifi模塊需在AndroidMainfest.xml聲明權(quán)限:

允許程序改變Wi-Fi連接狀態(tài) <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 允許程序訪問Wi-Fi網(wǎng)絡(luò)狀態(tài)信息 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

2、獲取WifiManager的實(shí)例,用于操作wifi:

wifiManager = (WifiManager)getSystemService(Service.WIFI_SERVICE);

3、打開或關(guān)閉wifi

//isChecked為true表示打開wifi,false關(guān)閉WiFi if(!wifiManager.wifiEnable(isChecked)) { Toast.makeText(MainActivity.this,"WifisetEnabledfaled", Toast.LENGTH_SHORT).show();; } //獲取WiFi當(dāng)前的狀態(tài) switch(wifiManager.getWifiState()) { //wifi處于關(guān)閉狀態(tài) case WifiManager.WIFI_STATE_DISABLED: enableSwitch.setChecked(false); break; //wifi處于打開狀態(tài) case WifiManager.WIFI_STATE_ENABLED: enableSwitch.setChecked(true); //該方法用于開始掃描附近的wifi熱點(diǎn) wifiManager.startScan(); break; }

4、注冊wifi的相應(yīng)廣播監(jiān)聽wifi的狀態(tài)改變:

//掃描到可用的wifi熱點(diǎn) WifiManager.SCAN_RESULTS_AVAILABLE_ACTION //wifi狀態(tài)改變 WifiManager.WIFI_STATE_CHANGED_ACTION //wifi請求連接成功或失敗 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION //wifi連接或斷開狀態(tài)改變, ConnectivityManager.CONNECTIVITY_ACTION //wifi熱點(diǎn)狀態(tài)改變 "android.net.wifi.WIFI_AP_STATE_CHANGED" 定義BroadcastReceiver接收廣播: class WifiReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { //掃描到可用熱點(diǎn) if (intent.getAction().equals( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { //獲取最近一次掃描到的wifi列表 resultList = wifiManager.getScanResults(); String[] result = mywifi.getString(resultList); int i=0; for(ScanResult scan:resultList){ //判斷是否已保存了連接信息 if(mywifi.isSaveConfigtion(scan.SSID)!=null){ result[i] += ":已保存"; } i++; } } //wifi或熱點(diǎn)的狀態(tài)發(fā)生改變 else if(intent.getAction() .equals(WifiManager.WIFI_STATE_CHANGED_ACTION)|| intent.getAction() .equals("android.net.wifi.WIFI_AP_STATE_CHANGED")) { //獲取wifi或熱點(diǎn)當(dāng)前的狀態(tài) switch(intent.getIntExtra("wifi_state", 0)){ //wifi狀態(tài)變成關(guān)閉 case 1: adapter.clear(); stateText.setText("Wifi已關(guān)閉"); break; //WiFi狀態(tài)變成打開 case 3: stateText.setText("Wifi已打開"); break; //熱點(diǎn)狀態(tài)變成打開 case 13 apstateText.setText("熱點(diǎn)已打開"); break; //熱點(diǎn)狀態(tài)變成關(guān)閉 case 11: apstateText.setText("熱點(diǎn)已關(guān)閉"); break; default: Log.d("STATE",String.valueOf(intent.getIntExtra("wifi_state", 0))); break; } } //連接狀態(tài)發(fā)生改變 else if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { boolean b = false; //獲取當(dāng)前的連接狀態(tài) boolean a = intent.getBooleanExtra("noConnectivity", b); if(!a) { //wifi連接成功,獲取連接的wifi屬性 System.out.println("連接成功"); } else { //wifi已斷開連接 System.out.println("斷開連接"); } } //wifi連接請求成功或失敗 else if(intent.getAction().equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { //獲取連接wifi屬性跟請求連接狀態(tài) WifiInfo info = wifiManager.getConnectionInfo(); SupplicantState state = info.getSupplicantState(); int flag =0; boolean connectflag = false; //連接請求成功 if (state == SupplicantState.COMPLETED) { Log.i("WifiReceiver", "(驗(yàn)證成功)"); SSIDText.setText(info.getSSID().substring(1,info.getSSID().length()-1)); //保存連接wifi信息 wifiManager.saveConfiguration(); flag =1; } //獲取請求失敗的錯(cuò)誤值,判斷是否屬于驗(yàn)證失敗 int errorCode = intent.getIntExtra( WifiManager.EXTRA_SUPPLICANT_ERROR, -1); if (errorCode == WifiManager.ERROR_AUTHENTICATING) { Log.i("WifiReceiver", "(驗(yàn)證失敗)"); } } } }

5、在掃描到wifi后獲取wifi的具體屬性:

//參數(shù):掃描到的wifi列表 public String[] getString(List<ScanResult> wifiList) { ArrayList<String> listStr = new ArrayList<String>(); for (int i = 0; i < wifiList.size(); i++) { /*SSID:wifi的標(biāo)示符,也就是名字 *capabilities:描述接入點(diǎn)支持的身份驗(yàn)證、密鑰管理和加密方案 *level:wifi的信號強(qiáng)度 *WifiManager.calculateSignalLevel:將信號強(qiáng)度轉(zhuǎn)換成信號等級 */ listStr.add(scan.SSID+":" +scan.capabilities+":" +String.valueOf(WifiManager.calculateSignalLevel(scan.level, 5))); } return listStr.toArray(new String[0]); }

6、獲取當(dāng)前wifi連入點(diǎn)的一些常用信息

WifiInfo connectInfo = wifiManager.getConnectionInfo(); //連接wifi的名字 connectInfo.getSSID(); //wifi的連接速度跟單位 connectInfo.getLinkSpeed(); connectInfo.LINK_SPEED_UNITS; //連接wifi的ip地址 connectInfo.getIpAddress(); //用下面的轉(zhuǎn)換方法將connectInfo.getIpAddress()轉(zhuǎn)換成String public String intToIp(int i) {return ((i >> 24 ) & 0xFF ) + "." + ((i >> 16 ) & 0xFF) + "." + ((i >> 8 ) & 0xFF) + "." + ( i & 0xFF) ; }

7、創(chuàng)建wifi信息用于wifi連接,分為無密碼、WPA兩種:

/*無密碼連接: *SSID:wifi的標(biāo)識符 *config:用于wifi連接的wifi信息 */ String SSID = ssid; WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; config.allowedAuthAlgorithms .set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); /*有密碼連接: *SSID:wifi的標(biāo)識符 *password:wifi密碼 *config:用于wifi連接的wifi信息 */ String gol_password = password; WifiConfiguration config = new WifiConfiguration(); config.SSID = "\"" + ssid + "\""; config.preSharedKey = "\"" + gol_password + "\""; config.hiddenSSID = true; config.status = WifiConfiguration.Status.ENABLED; config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); //使用上面新建的WifiConfiguration config連接wifi: int wcgID = wifiManager.addNetwork(wifiConfig); //連接成功返回true,失敗返回false boolean flag = wifiManager.enableNetwork(wcgID, true);

8、wifi斷開連接:

//SSID:wifi的標(biāo)示符 public boolean disconnectWifi(String SSID) { List<WifiConfiguration> existingConfigs = null; existingConfigs = wifiManager.getConfiguredNetworks();; for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { if(wifiManager.disableNetwork(existingConfig.networkId)) { return true; }else break; } } return false; }

9、判斷wifi信息是否已保存:

public WifiConfiguration isSaveConfigtion(String SSID) { List <WifiConfiguration> existingConfigs = null; existingConfigs = wifiManager.getConfiguredNetworks();; for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; }

10、刪除保存的wifi信息:

public boolean removeWifi(String SSID) { List<WifiConfiguration> existingConfigs; existingConfigs= wifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return wifiManager.removeNetwork(existingConfig.networkId); } } return false; }

至此wifi的打開、關(guān)閉、掃描、連接、斷開等基本功能的開發(fā)就基本結(jié)束了,但是在日常的wifi使用中,我們不僅僅只是連接熱點(diǎn),有時(shí)也會開啟安卓上的本地?zé)狳c(diǎn)供其它安卓設(shè)備連接,所以下面的部分就是設(shè)置本地的wifi熱點(diǎn)信息并打開等功能。

11、熱點(diǎn)跟wifi不能同時(shí)使用,所以在打開熱點(diǎn)前需先關(guān)閉掉wifi

//先判斷wifi是否處于打開的狀態(tài),如果是則先關(guān)閉再打開熱點(diǎn) if(wifiManager.isWifiEnabled()){ wifiManager.setWifiEnabled(false); Toast.makeText(MainActivity.this, "關(guān)閉當(dāng)前wifi,創(chuàng)建熱點(diǎn)", Toast.LENGTH_SHORT).show(); }

創(chuàng)建熱點(diǎn)信息:分為有密碼、無密碼

/*無密碼熱點(diǎn): *SSID:熱點(diǎn)名字 *config:熱點(diǎn)信息 */ WifiConfiguration config = new WifiConfiguration(); config.SSID = ssid; config.wepTxKeyIndex = 0; config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; /*有密碼熱點(diǎn): *SSID:熱點(diǎn)名字 *password:熱點(diǎn)密碼 *config:熱點(diǎn)信息 */ config.hiddenSSID = true; config.preSharedKey = password; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

使用上面創(chuàng)建的熱點(diǎn)信息打開熱點(diǎn)

//config:熱點(diǎn)信息,打開熱點(diǎn) Method method1 = null; try { method1 = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); method1.invoke(wifiManager, config, true); } catch (Exception e) { e.printStackTrace(); } //判斷熱點(diǎn)是否處于打開狀態(tài): try { Method method = wifiManager.getClass().getMethod("isWifiApEnabled"); method.setAccessible(true); return (Boolean) method.invoke(wifiManager); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } //關(guān)閉熱點(diǎn),先判斷熱點(diǎn)是否已被打開,是則關(guān)閉 if (isWifiApEnabled(wifiManager)) { Method method = wifiManager.getClass().getMethod("getWifiApConfiguration"); method.setAccessible(true); WifiConfiguration config = (WifiConfiguration) method.invoke(wifiManager); Method method2 =wifiManager.getClass() .getMethod("setWifiApEnabled",WifiConfiguration.class, boolean.class); method2.invoke(wifiManager, config, false); }

到了這里安卓的wifi使用就已完成了,包括了wifi跟熱點(diǎn)兩大部分,wifi部分主要包括掃描、配置、連接斷開等,熱點(diǎn)部分主要是配置熱點(diǎn)信息并打開。


 

狀 態(tài): 離線

公司簡介
產(chǎn)品目錄

公司名稱: 廣州市微嵌計(jì)算機(jī)科技有限公司
聯(lián) 系 人: 李工
電  話: 020-32206882
傳  真: 020-32207973
地  址: 廣東廣州黃埔永和新莊工業(yè)園B座
郵  編: 510630
主  頁:
 
該廠商相關(guān)技術(shù)文摘:
展頻芯片在Wince平板上的應(yīng)用
安卓設(shè)備的網(wǎng)絡(luò)adb調(diào)試設(shè)置
WindowsCE上直接打開avi文件
金融行業(yè)電源保護(hù)解決方案之HMI工業(yè)平板電腦應(yīng)用
更多文摘...
立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
用戶名: 密碼: 免費(fèi)注冊為中華工控網(wǎng)會員
請留下您的有效聯(lián)系方式,以方便我們及時(shí)與您聯(lián)絡(luò)

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動(dòng)態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved