关于wifiManager.getConnectionInfo()与wifiManager.getScanResults()的使用问题

来源:互联网 发布:淘宝店铺入口 编辑:程序博客网 时间:2024/04/30 07:58
先解释一下:
wifiManager.getConnectionInfo()是用来获取当前已连接上的wifi的信息。
wifiManager.getScanResults()是用来获得手机扫描到的所有wifi的信息。

小弟之前在一个线程里面放置wifiManager.getConnectionInfo()实时获取当前连接的wifi信号强度的信息,用一个textview来实时显示信号强度的变化,这个是实现了的,随着我原理或者靠近路由器,textview上的信号强度是会变化的。

可是后来我试了试把wifiManager.getScanResults()方在线程里面实时显示当前扫描出来的所有无线信号的信号强度变化,可是发现textview中信号强度没有任何变化,只有当我把程序退出再进入后,显示的信号强度就发生了变化,意思就是使用wifiManager.getScanResults()时,屏幕不能实时更新,不知道这是为什么。

private void obtainWifiInfo() {

//显示当前连接的wifi信息(可以实时更新)
WifiInfo info;
info= wifiManager.getConnectionInfo();
if (info.getBSSID() != null) {  
     // 链接信号强度
double strength = WifiManager.calculateSignalLevel(info.getRssi(), 1001);  
textview1.setText("强度:"+strength+" ");  
    // Wifi源名称
String ssid = info.getSSID();                   
textview0.setText("名称:"+ssid+" ");  
}



        // 显示扫描到的所有wifi信息(不能实时更新):
WifiManager wifiManager= (WifiManager) getSystemService(WIFI_SERVICE);
StringBuilder scanBuilder= new StringBuilder();
List<ScanResult> scanResults=wifiManager.getScanResults();//搜索到的设备列表
for (ScanResult scanResult : scanResults) {
scanBuilder.append("\n设备名:"+scanResult.SSID
                        +"\n信号强度:"+wifiManager.calculateSignalLevel(scanResult.level,1001)+"\n");
}
textview3.setText(scanBuilder);
}




Thread t = new Thread(new Runnable() 
{
public void run() 
{

while(true)
    {
        runOnUiThread(new Runnable() 
        {
        public void run()
        {

        obtainWifiInfo();
        }
        });
        try{
Thread.sleep(500);
}catch(InterruptedException e){
e.printStackTrace();
}
    }
}
});
t.start();
}


0 0
原创粉丝点击