Android網絡開發之WIFI


WIFI全稱Wireless Fidelity, 又稱802.11b標准。WIFI聯盟成立於1999年,當時的名稱叫做Wireless Ethernet Compatibility Alliance(WECA), 2002年10月正式改名Wi-Fi Alliance。

Android 提供android.net.wifi 包。wifi api為app和底層無線棧進行交流提供途徑。底層無線棧為wifi提供接入點。

 

android.net.wifi 中常用的類有:

1. ScanResult, 主要用來描述已經檢測出的接入點,包括接入點的地址、接入點的名稱、身份認證、頻率、信號強度等。

2. WifiConfiguration, wifi網絡配置,包括安全配置等。

3. WifiInfo, Wifi無線連接的描述,包括接入點、網絡連接狀態、隱藏的接入點、IP地址、連接速度、MAC地址、網絡ID、信號強度等。

4. WifiManager, 提供管理wifi連接的大部分API。

5. WifiManager.WifiLock, 通過WifiLock來鎖定wifi網絡,使其一直保持連接,直到這個鎖定被釋放。如果app需要下載很大的文件,就需要保持wifi鎖,來確保app有足夠的時間下載完成。wifi鎖不能超越wifi-enabled設置,也沒有飛行模式。

 

WifiManager的常用方法

1. addNetwork

2. calculateSignalLevel,

3. compareSignalLevel,

4. createWifiLock,

5. disableNetwork,

6. disconnect,

7. enableNetwork,

8. getConfiguredNetworks,

9. getDhcpInfo,

10. getScanResults,

11. getWifiState,

12. isWifiEnabled,

13. pingSupplicant,

14. reassociate,

15. removeNetwork,

16. saveConfiguration,

17. setWifiEnabled,

18. startScan,

19. updateNetwork.

 

學習如何控制app中的wifi連接。

// 獲得WifiManager對象

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

 

public class WifiAdmin {

  private WifiManager mWifiManager;

  private WifiInfo mWifiInfo;

  private List<ScanResult> mWifiList;

  private List<WifiConfiguration> mWifiConfigurations;

  private WifiLock mWifiLock;

 

  public WifiAdmin(Context context) {

    mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    mWifiInfo = mWifiManager.getConnectionInfo();

  }

    // 打開wifi

    if(!mWifiManager.isWifiEnabled()){

      mWifiManager.setWifiEnabled(true);

    }

    // 關閉wifi

    if(mWifiManager.isWifiEnabled()){

      mWifiManager.setWifiEnabled(false);

    }

    // 鎖定wifilock

    if(!mWifiLock.isHeld()) {

      mWifiLock.acquire();

    }

    // 解鎖wifiLock

    if(mWifiLock.isHeld()) {

      mWifiLock.unAcquire();

    }

    // 創建一個wifiLock

    mWifiLock = mWifiManager.createWifiLock(“xxx”);

    // 掃描wifi網絡

    mWifiManager.startScan();

    mWifiList = mWifiManager.getScanResults();

    // 得到wifi連接

    mWifiConfiguration = mWifiManager.getConfiguredNetworks();

    // 得到MAC地址

    mWifiInfo.getMacAddress();

    // 得到接入點的BSSID

    mWifiInfo.getBSSID();

    // 得到IP地址

    mWifiInfo.getIpAddress();

    // 得到連接的ID

    mWifiInfo.getNetworkId();

    // 得到WifiInfo所有信息

    mWifiInfo.toString();

    // 添加一個網絡並連接

    int wifiConfigId = mWifiManager.addNetwork(wifiConfig);

    mWifiManager.enableNetwork(wifiConfigId, true);

    // 斷開指定網絡

    mWifiManager.disableNetwork(wifiConfigId);

    mWifiManager.disconnect();

}

 

在AndroidManifest.xml文件中授權

<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE”/>

<uses-permission android:name=”android.permission.ACCESS_CHECKIN_PROPERTIES”/>

<uses-permission android:name=”android.permission.WAKE_LOCK”/>

<uses-permission android:name=”android.permission.INTERNET”/>

<uses-permission android:name=”android.permission.CHANGE_WIFI_STATE”/>

<uses-permission android:name=”android.permission.MODIFY_PHONE_STATE”/>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM