Android WiFi開發教程(一)——WiFi熱點的建立與關閉

來源:互聯網
上載者:User

標籤:反射   開啟   pass   src   pretty   網路   cti   簡單的   public   

相對於BlueTooth,WiFi是當今使用最廣的一種無線網路傳輸技術, 幾乎所有智能手機、平板電腦和膝上型電腦都支援Wi-Fi上網。因此,掌握基本的WiFI開發技術是非常必要的。本教程將圍繞一個小Demo初步與大家一同探討WiFi開發。先上


 

Demo功能比較簡單,四個按鈕、兩個文本和一個列表。功能主要有建立WiFi熱點,關閉WiFi熱點,搜尋WiFi,串連WiFi,資料通訊。源碼會在教程結尾提供。本章節主要介紹WiFi熱點的建立和關閉需要用到的許可權
 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <uses-permission android:name="android.permission.INTERNET"/>

 

WiFi熱點的建立
/**     * 建立Wifi熱點     */    private void createWifiHotspot() {        if (wifiManager.isWifiEnabled()) {            //如果wifi處於開啟狀態,則關閉wifi,            wifiManager.setWifiEnabled(false);        }        WifiConfiguration config = new WifiConfiguration();        config.SSID = WIFI_HOTSPOT_SSID;        config.preSharedKey = "123456789";        config.hiddenSSID = true;        config.allowedAuthAlgorithms                .set(WifiConfiguration.AuthAlgorithm.OPEN);//開放系統認證        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);        config.allowedPairwiseCiphers                .set(WifiConfiguration.PairwiseCipher.TKIP);        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);        config.allowedPairwiseCiphers                .set(WifiConfiguration.PairwiseCipher.CCMP);        config.status = WifiConfiguration.Status.ENABLED;        //通過反射調用設定熱點        try {            Method method = wifiManager.getClass().getMethod(                    "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);            boolean enable = (Boolean) method.invoke(wifiManager, config, true);            if (enable) {                textview.setText("熱點已開啟 SSID:" + WIFI_HOTSPOT_SSID + " password:123456789");            } else {                textview.setText("建立熱點失敗");            }        } catch (Exception e) {            e.printStackTrace();            textview.setText("建立熱點失敗");        }    }

 

這裡我們需要用到一個很重要的API——WifiManager。源碼中是有這麼一段介紹:
This class provides the primary API for managing all aspects of Wi-Ficonnectivity. Get an instance of this class by calling{@link android.content.Context#getSystemService(String) Context.getSystemService(Context.WIFI_SERVICE)}.

 

可以瞭解到,我們能夠通過WifiManager來管理WiFi的串連。而通過Context.getSystemService(Context.WIFI_SERVICE)就能擷取到它的執行個體。
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
  • 1
  • 1
在開啟熱點的時候,我們需要確保WiFi是關閉狀態,因為大部分手機都是不支援熱點和WiFi是同時開啟的。接著就需要建立WifiConfiguration這個類,由於配置我們所要建立的熱點的屬性。這裡我們所需注意的主要是SSID、preSharedKey和KeyMgmt。 分別對應熱點的名稱、密碼和加密方式。配置完屬性後,我們就可以通過Java的反射機制去建立熱點。WiFi熱點的關閉
/**     * 關閉WiFi熱點     */    public void closeWifiHotspot() {        try {            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);        } catch (NoSuchMethodException e) {            e.printStackTrace();        } catch (IllegalArgumentException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        } catch (InvocationTargetException e) {            e.printStackTrace();        }    }
跟建立WiFI熱點一樣,關閉的時候同樣需要用到Java的反射機制。在調用Method的invoke方法時,將最後一個參數改成false就可以了。相對來說,WiFi熱點的建立與關閉還是比較簡單的。歡迎繼續閱讀下一篇Android WiFi開發教程(二)——WiFi的搜尋和串連

Android WiFi開發教程(一)——WiFi熱點的建立與關閉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.