Code Bye

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

先解释一下:
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();
	}

这个还真没研究过

5分
wifiManager.getConnectionInfo() 如果当做现在时的话,
那么scanresult就是过去时。想取得所有热点的信号,必须挨个取每个热点的当前的wifiinfo。
引用 2 楼 zxthello 的回复:

wifiManager.getConnectionInfo() 如果当做现在时的话,
那么scanresult就是过去时。想取得所有热点的信号,必须挨个取每个热点的当前的wifiinfo。

如果取每个热点当前的wifiinfo的话那么就需要对每个热点都挨个连接上去测一遍信号强度吧,那样的话就不现实了

因为你要启动扫描啊,才能获取到当前最新的scanresult,不扫描扫描結果咋会更新呢

15分
WifiManager有启动扫描的接口,时间久了不得了,你自己去看看吧
最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决
引用 6 楼 haoge520 的回复:

最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决

调用startscan()

引用 7 楼 programmer_wei 的回复:
Quote: 引用 6 楼 haoge520 的回复:

最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决

调用startscan()

前三天我已经解决了,也是调用你说的从新启动扫描热点的方法,终于有人回帖了,谢谢

你是怎么解决的?

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();
}

你这个代码写的怪

引用 8 楼 haoge520 的回复:
Quote: 引用 7 楼 programmer_wei 的回复:
Quote: 引用 6 楼 haoge520 的回复:

最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决

调用startscan()

前三天我已经解决了,也是调用你说的从新启动扫描热点的方法,终于有人回帖了,谢谢

楼主,你只在getScanResults()之前加了一句startscan()就可以更新了吗?为什么我还是不行。。。求解决

楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:

请问楼主具体解决的方法还记得么  我也是遇着  无法刷新内容的问题了   和你一样~~~

楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:

请问楼主具体解决的方法还记得么  我也是遇着  无法刷新内容的问题了   和你一样~~~

我的邮箱是 504932345@qq.com   有源程序可以发一份吗 ,感谢楼主~


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于wifiManager.getConnectionInfo()与wifiManager.getScanResults()的使用问题