Android 控制wifi 相關操作執行個體_Android

來源:互聯網
上載者:User

Android 控制WIFI相關操作

WIFI的全稱是Wireless Fidelity,又稱802.11b標準,是一種高速的無線通訊協議,傳輸速度可以達到11Mb/s。

實際上,對WIFI並不需要過多的控制(當成功串連WIFI後,就可以直接通過IP在WIFI裝置之間進行通訊了),一般只需要控制開啟或關閉WIFI以及獲得一些與WIFI相關的資訊(例如,MAC地址、IP等)。

如果讀者的Android手機有WIFI功能,可以在手機上測試本節的例子。要注意的是,WIFI功能不能在Android模擬器上測試,就算在有WIFI功能的真機上也需要先通過WIFI和電腦或其他WIFI裝置串連後,才能獲得與WIFI相關的資訊。

本節的例子可以關閉和開始WIFI,並獲得各種與WIFI相關的資訊。首先確認手機通過WIFI與其他WIFI裝置成功串連,然後運行

本節的例子,會看到如圖所示的輸出資訊。

本例的完整實現代碼如下:

package eoe.demo.wifi;  import java.net.Inet4Address; import java.util.List; import android.app.Activity; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.CompoundButton.OnCheckedChangeListener;  public class Main extends Activity implements OnCheckedChangeListener { private WifiManager wifiManager; private WifiInfo wifiInfo; private CheckBox chkOpenCloseWifiBox; private List<WifiConfiguration> wifiConfigurations; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 獲得WifiManager對象 wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); // 獲得串連資訊對象 wifiInfo = wifiManager.getConnectionInfo(); chkOpenCloseWifiBox = (CheckBox) findViewById(R.id.chkOpenCloseWifi); TextView tvWifiConfigurations = (TextView) findViewById(R.id.tvWifiConfigurations); TextView tvWifiInfo = (TextView) findViewById(R.id.tvWifiInfo); chkOpenCloseWifiBox.setOnCheckedChangeListener(this); // 根據當前WIFI的狀態(是否被開啟)設定複選框的選中狀態 if (wifiManager.isWifiEnabled()) { chkOpenCloseWifiBox.setText("Wifi已開啟"); chkOpenCloseWifiBox.setChecked(true); } else { chkOpenCloseWifiBox.setText("Wifi已關閉"); chkOpenCloseWifiBox.setChecked(false); } // 獲得WIFI資訊 StringBuffer sb = new StringBuffer(); sb.append("Wifi資訊\n"); sb.append("MAC地址:" + wifiInfo.getMacAddress() + "\n"); sb.append("存取點的BSSID:" + wifiInfo.getBSSID() + "\n"); sb.append("IP地址(int):" + wifiInfo.getIpAddress() + "\n"); sb.append("IP地址(Hex):" + Integer.toHexString(wifiInfo.getIpAddress()) + "\n"); sb.append("IP地址:" + ipIntToString(wifiInfo.getIpAddress()) + "\n"); sb.append("網路ID:" + wifiInfo.getNetworkId() + "\n"); tvWifiInfo.setText(sb.toString()); // 得到配置好的網路 wifiConfigurations = wifiManager.getConfiguredNetworks(); tvWifiConfigurations.setText("已串連的無線網路\n"); for (WifiConfiguration wifiConfiguration : wifiConfigurations) { tvWifiConfigurations.setText(tvWifiConfigurations.getText() + wifiConfiguration.SSID + "\n"); } } // 將int類型的IP轉換成字串形式的IP private String ipIntToString(int ip) { try { byte[] bytes = new byte[4]; bytes[0] = (byte) (0xff & ip); bytes[1] = (byte) ((0xff00 & ip) >> 8); bytes[2] = (byte) ((0xff0000 & ip) >> 16); bytes[3] = (byte) ((0xff000000 & ip) >> 24); return Inet4Address.getByAddress(bytes).getHostAddress(); } catch (Exception e) { return ""; } }  @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 當選中複選框時開啟WIFI if (isChecked) { wifiManager.setWifiEnabled(true); chkOpenCloseWifiBox.setText("Wifi已開啟"); } // 當取消複選框選中狀態時關閉WIFI else { wifiManager.setWifiEnabled(false); chkOpenCloseWifiBox.setText("Wifi已關閉"); } }  }  

在AndroidManifest.xml檔案中要使用如下的代碼開啟相應的許可權。

XML/HTML代碼<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"> </uses-permission> <uses-permission android:name="android.permission.WAKE_LOCK"> </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"> </uses-permission> 

以上就是對Android Wifi 簡單一實例的源碼,在做Android開發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.