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

...全文
16249 16 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
这个还真没研究过
内容概要:本文档为一份《计算机程序设计语言(C++)》课程的实验报告,涵盖了从基础语法到面向对象编程的多个实验内容。实验内容包括基础语法练习(如银行存款计算、数值比较、科学计算)、控制结构(分支与循环,如闰年判断、素数判定、Kaprekar黑洞数)、数组操作(一维与二维数组的排序、查找、极值计算、杨辉三角)、函数定义与应用(递归、参数传递、函数重载)以及面向对象编程(类与对象的设计、继承、多态性、文件操作)。文档详细展示了每个实验的任务描述、具体C++代码实现、测试结果及实验分析,体现了从简单到复杂、逐步深入的学习路径。; 适合人群:具备C++基础语法知识,正在学习或巩固程序设计课程的在校大学生及初级编程学习者。; 使用场景及目标:①作为C++课程的配套实验指导材料,帮助学生通过实践掌握编程基础知识和核心算法;②用于自学练习,提升对循环、数组、函数和面向对象等核心概念的理解与编码能力。; 阅读建议:学习者应结合文档中的代码实例,动手在编程环境中逐一实现并调试,重点关注代码逻辑、边界条件处理和算法效率,通过对比预期输出与实际输出加深对知识点的掌握。

80,488

社区成员

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

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