android WIFI信息获取
在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]?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"?
??? xmlns:tools="http://schemas.android.com/tools"?
??? android:layout_width="match_parent"?
??? android:layout_height="match_parent"??
??? android:gravity="center"?
??? android:orientation="vertical">?
?
??? <ImageButton?
??????? android:id="@+id/Icon_WifiStatus"?
??????? android:layout_width="wrap_content"?
??????? android:layout_height="wrap_content"?
??????? android:src="@drawable/ic_wifi"/>?
?????
??? <TextView?
??????? android:id="@+id/Label_WifiDetail"?
??????? android:layout_width="wrap_content"?
??????? android:layout_height="wrap_content"?
??????? android:maxWidth="320dp"/>?
?
</LinearLayout>?
2. 為WIFI圖標加入一組可選的圖標,在drawable-hdpi文件夾下添加ic_wifi.xml文件,內容例如以下:
[html] view plaincopy
<level-list xmlns:android="http://schemas.android.com/apk/res/android">?
??? <item android:maxLevel="0"?? android:drawable="@drawable/ic_wifi_s0" />?
??? <item android:maxLevel="50"? android:drawable="@drawable/ic_wifi_s3" />?
??? <item android:maxLevel="70"? android:drawable="@drawable/ic_wifi_s2" />?
??? <item android:maxLevel="100" android:drawable="@drawable/ic_wifi_s1" />?
</level-list>?
注意須要導入用到的圖片
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() + "\nSSID : " + info.getSSID() +??
??????????????? "\nIpAddress : " + strIp + "\nMacAddress : " + info.getMacAddress() +?
??????????????? "\nNetworkId : " + info.getNetworkId() + "\nLinkSpeed : " + info.getLinkSpeed() + "Mbps" +??
??????????????? "\nRssi : " + 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]?
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>?
轉載于:https://www.cnblogs.com/wzjhoutai/p/6867120.html
總結
以上是生活随笔為你收集整理的android WIFI信息获取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openGl学习之基本图元
- 下一篇: 微信公众号开发 [03] 结合UEdit