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

oo笨小孩oo 2013-05-01 05:22:12
先解释一下:
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();
}

...全文
16146 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
t03330130 2015-12-30
  • 打赏
  • 举报
回复
学习了,谢谢分享。
流了个火 2015-10-13
  • 打赏
  • 举报
回复
引用 7 楼 programmer_wei 的回复:
[quote=引用 6 楼 haoge520 的回复:]
最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决

调用startscan()[/quote]

我也是这个问题,看了大神说的改了代码,果然可以了。补充一下

WifiManager wifiManager= (WifiManager) getSystemService(WIFI_SERVICE);
wifiManager.startScan(); //必须先启动扫描,之后才能检测到变化!!
List<ScanResult> results = wifiManager.getScanResults();
墨玉wsc 2015-04-28
  • 打赏
  • 举报
回复
同求源码一份,跪求楼主发一份源码,一起研究。谢谢。本人QQ邮箱:992313008@qq.com
qq_27185563 2015-04-13
  • 打赏
  • 举报
回复
楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我: 请问楼主具体解决的方法还记得么 我也是遇着 无法刷新内容的问题了 和你一样~~~ 我的邮箱是 504932345@qq.com 有源程序可以发一份吗 ,感谢楼主~
qq_27185563 2015-04-13
  • 打赏
  • 举报
回复
楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我:楼主看到我: 请问楼主具体解决的方法还记得么 我也是遇着 无法刷新内容的问题了 和你一样~~~
鱼公 2014-05-31
  • 打赏
  • 举报
回复
引用 8 楼 haoge520 的回复:
[quote=引用 7 楼 programmer_wei 的回复:] [quote=引用 6 楼 haoge520 的回复:] 最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决
调用startscan()[/quote] 前三天我已经解决了,也是调用你说的从新启动扫描热点的方法,终于有人回帖了,谢谢[/quote] 楼主,你只在getScanResults()之前加了一句startscan()就可以更新了吗?为什么我还是不行。。。求解决
ysh512 2013-11-20
  • 打赏
  • 举报
回复
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(); } 你这个代码写的怪
alilili_lili 2013-09-29
  • 打赏
  • 举报
回复
你是怎么解决的?
猪头 2013-05-16
  • 打赏
  • 举报
回复
引用 7 楼 programmer_wei 的回复:
[quote=引用 6 楼 haoge520 的回复:] 最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决
调用startscan()[/quote] 前三天我已经解决了,也是调用你说的从新启动扫描热点的方法,终于有人回帖了,谢谢
oo笨小孩oo 2013-05-11
  • 打赏
  • 举报
回复
引用 6 楼 haoge520 的回复:
最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决
调用startscan()
猪头 2013-05-08
  • 打赏
  • 举报
回复
最近一直在弄实时更新搜索附近WIFI的信号强度,试了很多方法,也不知道怎么解决
majaw 2013-05-07
  • 打赏
  • 举报
回复
WifiManager有启动扫描的接口,时间久了不得了,你自己去看看吧
majaw 2013-05-07
  • 打赏
  • 举报
回复
因为你要启动扫描啊,才能获取到当前最新的scanresult,不扫描扫描結果咋会更新呢
oo笨小孩oo 2013-05-07
  • 打赏
  • 举报
回复
引用 2 楼 zxthello 的回复:
wifiManager.getConnectionInfo() 如果当做现在时的话, 那么scanresult就是过去时。想取得所有热点的信号,必须挨个取每个热点的当前的wifiinfo。
如果取每个热点当前的wifiinfo的话那么就需要对每个热点都挨个连接上去测一遍信号强度吧,那样的话就不现实了
zxthello 2013-05-03
  • 打赏
  • 举报
回复
wifiManager.getConnectionInfo() 如果当做现在时的话, 那么scanresult就是过去时。想取得所有热点的信号,必须挨个取每个热点的当前的wifiinfo。
搞里头 2013-05-02
  • 打赏
  • 举报
回复
这个还真没研究过

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧