当前位置:操作系统 > 安卓/Android >>

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)).getConnect

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,