Android 應用軟體開發(十四)WIFI

來源:互聯網
上載者:User

WIFI是一種無線連網技術

要使用WIFI串連網路,首先需要設定作業WIFI網路所需的許可權,一般將下面四個許可權同時擷取

CHANGE_NETWORK_STATE

Allows applications to change network connectivity state

CHANGE_WIFI_STATE

Allows applications to change Wi-Fi connectivity state

ACCESS_NETWORK_STATE

Allows applications to access information about networks

ACCESS_WIFI_STATE

Allows applications to access information about Wi-Fi networks

擷取WIFI網卡的狀態
類似於WIFI這樣的系統級服務管理對象,通常都需要調用Context對象的getSystemService()方法來擷取,這個方法接收一個字串作為參數,根據參數的不同,得到不同的系統服務管理對象。管理WIFI網卡的對象叫做WifiManager,得到這個對象的方法如下:
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);

對於WifiManager來說,經常使用的有如下操作:

得到當前網卡狀態:
int wifiState = wifiManger.getWifiState();

這個函數返回的是一個整形,不同的傳回值代表著不同的狀態,每一種狀態都對應著一個常量,這些常量都存放在WifiManager類當中,具體含義如下:
WIFI_STATE_DISABLED:WIFI網卡不可用

WIFI_STATE_DISABLING:WIFI正在關閉

WIFI_STATE_ENABLED:WIFI網卡可用

WIFI_STATE_ENABLING:WIFI網卡正在開啟

WIFI_STATE_UNKNOWN:未知網卡狀態

需要注意的是WIFI網卡的開啟和關閉並不是瞬間的過程,需要一段時間。也就是說如果當前我們手機的網卡處於可用的狀態,我們關閉網卡之後,並不是馬上進入關閉狀態,而是處於正在關閉狀態,等關閉的動作完成以後才會真正進入到關閉狀態!

修改當前網卡狀態
得到WifiManager對象之後,就可以修改WIFI網卡狀態了,具體方法如下:
開啟WIFI網卡
wifiManger.setWifiEnabled(true);
關閉WIFI網卡
wifiManger.setWifiEnabled(false);

下面給出一個簡單的程式碼:

1、manifest中設定許可權

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="mars.wifi" android:versionCode="1" android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".WifiActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application><uses-sdk android:minSdkVersion="4" /><!-- 以下是使用wifi訪問網路所需要的許可權 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission></manifest> 

在WifiActivity.java中設定WIFI網卡狀態

package mars.wifi;import android.app.Activity;import android.content.Context;import android.net.wifi.WifiManager;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class WifiActivity extends Activity {    /** Called when the activity is first created. */private Button startButton = null;private Button stopButton = null;private Button checkButton = null;private WifiManager wifiManager = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        startButton = (Button)findViewById(R.id.startWifi);        stopButton = (Button)findViewById(R.id.stopWifi);        checkButton = (Button)findViewById(R.id.checkWifi);        startButton.setOnClickListener(new StartWifiListener());        stopButton.setOnClickListener(new StopWifiListener());        checkButton.setOnClickListener(new CheckWifiListener());    }    class StartWifiListener implements OnClickListener{@Overridepublic void onClick(View v) {wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);//設定狀態可用wifiManager.setWifiEnabled(true);System.out.println("wifi state --->" + wifiManager.getWifiState());Toast.makeText(WifiActivity.this, "當前Wifi網卡狀態為" + wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();}    }    class StopWifiListener implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubwifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);//設定狀態不可用wifiManager.setWifiEnabled(false);System.out.println("wifi state --->" + wifiManager.getWifiState());Toast.makeText(WifiActivity.this, "當前Wifi網卡狀態為" + wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();}        }        class CheckWifiListener implements OnClickListener{@Overridepublic void onClick(View v) {wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);System.out.println("wifi state --->" + wifiManager.getWifiState());Toast.makeText(WifiActivity.this, "當前Wifi網卡狀態為" + wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();}    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.