Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android WIFI信息獲取

android WIFI信息獲取

編輯:關於Android編程

在androi中WIFI信息的獲取可以通過系統提供的WIFI Service獲取

[java]
WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifi_service.getConnectionInfo();

其中WifiInfo 中比較常用的信息有:
[java]
/*
info.getBSSID(); 獲取BSSID地址。
info.getSSID(); 獲取SSID地址。 需要連接網絡的ID
info.getIpAddress(); 獲取IP地址。4字節Int, XXX.XXX.XXX.XXX 每個XXX為一個字節
info.getMacAddress(); 獲取MAC地址。
info.getNetworkId(); 獲取網絡ID。
info.getLinkSpeed(); 獲取連接速度,可以讓用戶獲知這一信息。
info.getRssi(); 獲取RSSI,RSSI就是接受信號強度指示
*/

同時可以通過接收系統的廣播,獲取當前WIFI的狀態
[java]
/*
WifiManager.WIFI_STATE_DISABLING 正在停止
WifiManager.WIFI_STATE_DISABLED 已停止
WifiManager.WIFI_STATE_ENABLING 正在打開
WifiManager.WIFI_STATE_ENABLED 已開啟
WifiManager.WIFI_STATE_UNKNOWN 未知
*/

以下給出具體的實例:
1.在布局文件中增加一個WIFI圖標,和顯示具體信息的文本 (activity_wifi_example.xml)
[html]
xmlns:tools=http://schemas.android.com/tools
android:layout_width=match_parent
android:layout_height=match_parent
android:gravity=center
android:orientation=vertical>

android:id=@+id/Icon_WifiStatus
android:layout_width=wrap_content
android:layout_height=wrap_content
android:src=@drawable/ic_wifi/>

android:id=@+id/Label_WifiDetail
android:layout_width=wrap_content
android:layout_height=wrap_content
android:maxWidth=320dp/>

 

2. 為WIFI圖標添加一組可選的圖標,在drawable-hdpi目錄下增加ic_wifi.xml文件,內容如下:
[html] view plaincopy






注意需要導入用到的圖片

3.在代碼中接收WIFI狀態廣播,開啟一個500ms的Timer實時查詢WIFI狀態 (WifiExample.java)

[java]
package com.example.wifiexample;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageButton;
import android.widget.TextView;

public class WifiExample extends Activity {

private final String TAG = WifiExample;

private IntentFilter mWifiIntentFilter;
private BroadcastReceiver mWifiIntentReceiver;

private ImageButton mIconWifi;
private TextView mLabelWifi;
private Handler mHandler;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wifi_example);

mIconWifi = (ImageButton)findViewById(R.id.Icon_WifiStatus);
mLabelWifi = (TextView)findViewById(R.id.Label_WifiDetail);

mWifiIntentFilter = new IntentFilter();
mWifiIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);

mWifiIntentReceiver = new mWifiIntentReceiver();
registerReceiver(mWifiIntentReceiver, mWifiIntentFilter);

mHandler = new Handler();
mHandler.post(new TimerProcess());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_wifi_example, menu);
return true;
}

private class TimerProcess implements Runnable{
public void run() {
showWIFIDetail();
mHandler.postDelayed(this, 500);
}
}

public void showWIFIDetail()
{
WifiInfo info = ((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo();
mIconWifi.setImageLevel(Math.abs(info.getRssi()));

/*
info.getBSSID(); 獲取BSSID地址。
info.getSSID(); 獲取SSID地址。 需要連接網絡的ID
info.getIpAddress(); 獲取IP地址。4字節Int, XXX.XXX.XXX.XXX 每個XXX為一個字節
info.getMacAddress(); 獲取MAC地址。
info.getNetworkId(); 獲取網絡ID。
info.getLinkSpeed(); 獲取連接速度,可以讓用戶獲知這一信息。
info.getRssi(); 獲取RSSI,RSSI就是接受信號強度指示
*/

int Ip = info.getIpAddress();
String strIp = + (Ip & 0xFF) + . + ((Ip >> 8) & 0xFF) + . + ((Ip >> 16) & 0xFF) + . + ((Ip >> 24) & 0xFF);

mLabelWifi.setText(BSSID : + info.getBSSID() + SSID : + info.getSSID() +
IpAddress : + strIp + MacAddress : + info.getMacAddress() +
NetworkId : + info.getNetworkId() + LinkSpeed : + info.getLinkSpeed() + Mbps +
Rssi : + info.getRssi());
info.getIpAddress();
}

private class mWifiIntentReceiver extends BroadcastReceiver{

public void onReceive(Context context, Intent intent) {

WifiInfo info = ((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo();
mIconWifi.setImageLevel(Math.abs(info.getRssi()));

/*
WifiManager.WIFI_STATE_DISABLING 正在停止
WifiManager.WIFI_STATE_DISABLED 已停止
WifiManager.WIFI_STATE_ENABLING 正在打開
WifiManager.WIFI_STATE_ENABLED 已開啟
WifiManager.WIFI_STATE_UNKNOWN 未知
*/

switch (intent.getIntExtra(wifi_state, 0)) {
case WifiManager.WIFI_STATE_DISABLING:
Log.d(TAG, WIFI STATUS : WIFI_STATE_DISABLING);
break;
case WifiManager.WIFI_STATE_DISABLED:
Log.d(TAG, WIFI STATUS : WIFI_STATE_DISABLED);
break;
case WifiManager.WIFI_STATE_ENABLING:
Log.d(TAG, WIFI STATUS : WIFI_STATE_ENABLING);
break;
case WifiManager.WIFI_STATE_ENABLED:
Log.d(TAG, WIFI STATUS : WIFI_STATE_ENABLED);
break;
case WifiManager.WIFI_STATE_UNKNOWN:
Log.d(TAG, WIFI STATUS : WIFI_STATE_UNKNOWN);
break;
}
}
}
}

4.最後在AndroidManifest.xml增加獲取WIFI權限的支持
[html]

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved