在WiFi开发中,使用getScanResults()方法获取扫描到的WiFi列表时,列表中会出现多个SSID相同,BSSID最后4位不相同的热点,而且两个都能连接。参照系统WiFi过滤机制,这里实现的过滤策略,移除列表中SSID相同的热点仅保留信号最强的热点

    public List<ScanResult> getScanList() {if (mWifiManager != null) {List<ScanResult> olist = mWifiManager.getScanResult();if (olist != null) {List<ScanResult> nlist = new ArrayList<>();WifiInfo info = mWifiManager.getConnectedInfo();for (int i = 0; i < olist.size(); i++) {if (info != null && info.getBSSID().equals(olist.get(i).BSSID)) {// 当前已连接设备不显示在列表中continue;}// 该热点SSID是否已在列表中int position = getItemPosition(nlist, olist.get(i));if (position != -1) { // 已在列表// 相同SSID热点,取信号强的if (nlist.get(position).level < olist.get(i).level) {nlist.remove(position);nlist.add(position, olist.get(i));}} else {nlist.add(olist.get(i));}}if (comparator != null) {// 按信号强度排序Collections.sort(nlist, comparator);}return nlist;}}return null;}

上面代码都有注释,很好理解。下面是提取相同SSID坐标方法:

 /*** 返回item在list中的坐标*/private int getItemPosition(List<ScanResult>list, ScanResult item) {for (int i = 0; i < list.size(); i++) {if (item.SSID.equals(list.get(i).SSID)) {return i;}}return -1;}

因为要得到nlist里面已经存在热点的坐标,所以没有使用list.contains()方法。

有个坑,如果开2个SSID相同的热点也会被过滤掉信号弱的那个。

有没有更好的过滤方式分享一下......

(Android开发)WiFi扫描列表有多个相同SSID的热点过滤相关推荐

  1. android开发 RecyclerView 瀑布列表布局

    android开发 RecyclerView 瀑布列表布局 1.写一个内容的自定义小布局: <?xml version="1.0" encoding="utf-8& ...

  2. android p wifi一直在扫描_(一百六十八)Android P wifi 扫描失败结果上报流程梳理-扫描上报梳理②...

    接(一百五十五)Android P wifi 扫描失败结果上报流程梳理-扫描上报梳理 扫描失败上报梳理发现梳理的差了很多,特补充 1.WificondScannerImpl @Override pub ...

  3. Android中Wi-Fi扫描、连接和信息(一)

    1.Wi-Fi介绍 Wi-Fi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM 射频频段.连接到无线局域网通常是有密码保护的:但也可是开放的,这 ...

  4. Android 11 WiFi扫描流程梳理

    上一篇我们梳理了WiFi的开启流程,Android11 WiFi开启流程,在最后我们说到ActiveModeWarden中注册了ClientListener监听器.我们接着这个逻辑继续梳理一下打开Wi ...

  5. android开发基础_列表视图一(List View)

    官网解释: a view that shows items in a verically list,The items come from the ListAdapter associated wit ...

  6. android开发实现选择列表,Android使用RecyclerView实现列表数据选择操作

    Android使用RecyclerView实现列表数据选择操作 发布时间:2020-08-31 17:50:13 来源:脚本之家 阅读:76 作者:迟做总比不做强 这些时间做安卓盒子项目,因为安卓电视 ...

  7. android 图片热点区域,Android开发之扫描附近wifi热点并列表显示

    最近项目中用到了wifi模块,今天做一个简单的总结. 参考:http://www.2cto.com/kf/201310/253617.html 1.怎样获取wifi对象并进行操作 要操作WIFI设备, ...

  8. 解决:android 开发 WIFI 功能 密码输入正确时监听的问题

    问题描述: 在一个 android 项目中 需要 开发 类似于 系统 wifi 连接的功能,选择可用 wifi 后,输入正确的密码后,WifiManager.SUPPLICANT_STATE_CHAN ...

  9. Android开发--WIFI实现

    wifi的基本结构 在Android的官方文档中定义了如下五种状态: WIFI_STATE_DISABLING  WIFI网卡正在关闭  0 WIFI_STATE_DISABLED   WIFI网卡不 ...

最新文章

  1. 必应词典UWP版-开发小结
  2. 【CF582E】Boolean Function 树形DP+FWT
  3. 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型
  4. #react-native BUG#
  5. activexobject对象不能创建_面向对象设计方法(Object oriented)
  6. git比较当前工作区和之前提交的内容差异
  7. idea测试单元错误_不要单元测试错误
  8. http代码_一行代码就可以实现HTTP文件服务器,他为什么写了150行?
  9. mongodb更新操作符$rename
  10. python读取二进制数据转整形,在python中读取二进制数据(替换C代码)
  11. mysql innodb_double_write特性
  12. java jexl_利用Jexl实现数据库的计算公式在Java中执行
  13. JAVA获取同一路径下所有子类或接口实现类
  14. 2017.11.20T19_5
  15. 已知a/b,求c的位置
  16. 濮阳第二届创客机器人比赛_【比赛】许昌市第二届机器人大赛成功举办
  17. (Nips-2015)空间变换器网络
  18. 基于AD Event日志实时检测GPO后门
  19. 207399-07-3,IR-780;IR-808;1558079-49-4,IR-825
  20. zznu-2183: 口袋魔方

热门文章

  1. python学习之路:合并多个excel文件、合并多个pdf文件
  2. 【图片新闻】80万美元一枚的LRLAP炮弹让朱姆沃尔特级驱逐舰“心力交瘁”
  3. Android漂亮的音乐歌词控件,仿网易云音乐滑动效果
  4. Springboot Condition 详解
  5. String类型转换BigDecimal类型
  6. 梦幻用云服务器虚拟主机玩会封吗,梦幻用云服务器虚拟主机玩会封吗
  7. Typora文件别人打开不显示图片-图像处理
  8. 锐龙微型计算机,“Zen 2”核心进击主流市场,AMD发布新款锐龙3处理器
  9. kafka中topic默认属性_kafka consumer 配置详解
  10. 国密算法SSL安全通道Tomcat8的配置,适配360国密浏览器,密信国密浏览器,海泰红莲花国密浏览器