今天在做WIFI定位方面的东西,第一步工作就是要采集当前周围扫描到的wifi信号相关详细信息,包括名称,强度,频率等等。
XML文件就布局一个简单的TextView即可,同时Androidmenifest文件中添加权限:
public class MainActivity extends Activity {
WifiManager wifi;
List list;
TextView show;
String csum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (TextView) findViewById(R.id.textView1);
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if(! wifi.isWifiEnabled()){
if(wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING)
wifi.setWifiEnabled(true);
}
/**
* 获取当前连接上的wifi相关信息
*/
WifiInfo info = wifi.getConnectionInfo();
int strength = info.getRssi();
int speed = info.getLinkSpeed();
String bssid = info.getBSSID();
String ssid = info.getSSID();
String units = WifiInfo.LINK_SPEED_UNITS;
String wifiinformation = "ScanResults is: \n";
/**
* 获取扫描到的所有wifi相关信息
*/
List<ScanResult> results = wifi.getScanResults();
for(ScanResult result:results){
wifiinformation += result.BSSID+","+result.SSID+","+result.level+"\n";
}
String text = "We are connecting to " + ssid + " at " + String.valueOf(speed) + " " + String.valueOf(units) + ". Strength : " + strength;
wifiinformation += "\n\n";
wifiinformation += text;
show.setText(wifiinformation);
}
}
相关背景知识:
BSSID:我们一般认为是mac地址,由**:**:**:**:**:**组成;
SSID:我们一般认为是路由器所起的名称,即路由器发送的信号的名字;
level:当前wifi信号强度,一般为负值;
speed:传输速度。
这样上述程序运行结果就是如图: