android獲取wifi信息sample code

紅色部分要求在layout main.xml中添加。

項目結構截圖:


package com.wifi.ap.test;


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.Button;
import android.widget.ImageButton;
import android.widget.TextView;


public class WifiTestActivity extends Activity {
    /** Called when the activity is first created. */
private final String TAG = "WifiTest";

private IntentFilter mWifiIntentFilter;
private BroadcastReceiver  mWifiIntentReceiver;

private ImageButton mIconWifi;
private TextView mLabelWifi;
private Button mStartButton;
private Button mConnectButton;

private Handler mHandler;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        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 WifiIntentReceiver();
        registerReceiver(mWifiIntentReceiver, mWifiIntentFilter);
        
        mHandler = new Handler();
        mHandler.post(new TimeProcess());
        


    }
    
    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.wifi_test, menu);
return true;
}
    
    private class TimeProcess implements Runnable{


@Override
public void run() {
showWifiDetail();
mHandler.postDelayed(this, 500);

}
   
    }
    
public void showWifiDetail() {
WifiInfo wifiInfo = ((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo();
mIconWifi.setImageLevel(Math.abs(wifiInfo.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 = wifiInfo.getIpAddress();
String sIp = "" + (ip & 0xFF) + "." + ((ip >> 8) & 0xFF) + "." +
((ip >> 16) & 0xFF) + "." + ((ip >> 24) & 0xFF);
mLabelWifi.setText("BSSID : " + wifiInfo.getBSSID() + "\nSSID : " + wifiInfo.getSSID() +  
                "\nIpAddress : " + sIp + "\nMacAddress : " + wifiInfo.getMacAddress() + 
                "\nNetworkId : " + wifiInfo.getNetworkId() + "\nLinkSpeed : " + wifiInfo.getLinkSpeed() + "Mbps" +  
                "\nRssi : " + wifiInfo.getRssi()); 
}
private class WifiIntentReceiver extends BroadcastReceiver{


@Override
public void onReceive(Context context, Intent intent) {
WifiInfo wifiInfo = ((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo();
mIconWifi.setImageLevel(Math.abs(wifiInfo.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;
}
}
   
    }
    
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章