1. 简述
WiFi是Android手机重要功能,在设计过程中需要经常测试和比较WiFi信号、扫描到AP个数等。本实例利用Android框架的WiFiManager对象扫描AP列表,每个AP的信息包括SSID、BSSID、加密方式、信号等级、频率、带宽、时间戳等。说明一下,Android系统定义了带宽常数CHANNNEL_WIDTH_20MHZ=0; CHANNNEL_WIDTH_40MHZ=1;CHANNNEL_WIDTH_80MHZ=2;CHANNNEL_WIDTH_160MHZ=3;CHANNNEL_WIDTH_80MHZ_PLUS_MHZ=4,在扫描结果中用常数表示带宽。本实例有3个部分,UI线程主要设置用户界面显示AP列表、翻页处理、初始化SimpleAdapter、获得WiFiManager对象、开始扫描线程、注册广播接收器;定时扫描线程只负责扫描;广播接收器BroadcastReceiver mWifiStateReceiver,处理扫描返回数据,并在用户界面空闲时更新数据。程序源码如下:WiFi是Android手机重要功能,在设计过程中需要经常测试和比较WiFi信号、扫描到AP个数等。本实例利用Android框架的WiFiManager对象扫描AP列表,每个AP的信息包括SSID、BSSID、加密方式、信号等级、频率、带宽、时间戳等。说明一下,Android系统定义了带宽常数CHANNNEL_WIDTH_20MHZ=0; CHANNNEL_WIDTH_40MHZ=1;CHANNNEL_WIDTH_80MHZ=2;CHANNNEL_WIDTH_160MHZ=3;CHANNNEL_WIDTH_80MHZ_PLUS_MHZ=4,在扫描结果中用常数表示带宽。本实例有3个部分,UI线程主要设置用户界面显示AP列表、翻页处理、初始化SimpleAdapter、获得WiFiManager对象、开始扫描线程、注册广播接收器;定时扫描线程只负责扫描;广播接收器BroadcastReceiver mWifiStateReceiver,处理扫描返回数据,并在用户界面空闲时更新数据。程序源码如下:
2. WiFiAdmin.java
//列出手机扫描的WiFi AP,1秒更新一次。
package com.lmy.wifiadmin;
import android.Manifest;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import static java.lang.Thread.sleep;
public class WiFiAdmin extends AppCompatActivity {
//定义WifiManager对象
private WifiManager mWifiManager;
priv