需求场景:智能设备有wifi模块,整套wifi功能,包括:搜索wifi列表,wifi连接,wifi切换,wifi忘记密码等。

高版本(安卓8以上)为了省电,节流,谷歌对wifi限制越来越多,安卓9以上前台两分钟内最多刷新4次,(PS:实际我写的时候,感觉最多刷新两次,甚至一次,之后调用startSacn(),getScanResults() 方法,都是秒响应,获取上一次的wifi信息 - -! 很操蛋)

网上找了很多资源,有监听系统wifi列表的,试了,不好使。

理想的解决方案:

调用刷新的时候,给硬件发送一个自定义广播,硬件那边收到之后,后台刷新系统wifi列表,硬件只需要做刷新即可,毕竟前台监听系统wifi列表广播,硬件刷新wifi之后,前台可以直接展示最新的wifi列表信息。但是我们硬件....不会搞啊。- -

我的解决方案:

开发者选项中,有一个 “WLAN扫描调节” 的选项,让硬件默认关闭掉,这样前台应用就可以算是及时刷新附件wifi列表了,(PS:算是及时吧,打个比方,手机开热点,前台应用点击扫描wifi,第一遍刷新不出来,第二遍就出来了,关闭热点,第一遍wifi热点还在,第二遍扫描就没了)

代码如下:

@Overrideprotected void onResume() {super.onResume();ScanWifiInfo();}
    private ArrayList<ScanResult> mWifiList = new ArrayList<>();@SuppressLint("WifiManagerLeak")private void ScanWifiInfo() {mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);mWifiManager.startScan(); //启动扫描WaitDialog.show("搜索附进wifi...");//wifi显示列表mWifiList.clear();new Handler().postDelayed(new Runnable() {@Overridepublic void run() {List<ScanResult> scanResults = mWifiManager.getScanResults();//搜索到的设备列表WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();WaitDialog.dismiss();List<ScanResult> newScanResultList = new ArrayList<>();for (ScanResult scanResult : scanResults) {int position = getItemPosition(newScanResultList, scanResult);if (position != -1) {if (newScanResultList.get(position).level < scanResult.level) {newScanResultList.remove(position);newScanResultList.add(position, scanResult);}} else {newScanResultList.add(scanResult);}}//查看是哪个wifi已连接String ssid = mWifiInfo.getSSID().replace("\"", "");for (int i = 0; i < newScanResultList.size(); i++) {String ssid1 = newScanResultList.get(i).SSID;//判断,哪个wifi连接就放集合第一个if (mWifiInfo != null && ssid.equals(ssid1)) {
//                    LogUtil.e(scanResultList.get(i).SSID + "  level:" + scanResultList.get(i).level + "是否连接:" + "是");mWifiList.add(0, newScanResultList.get(i));mAdapter.notifyDataSetChanged();} else {
//                    LogUtil.e(scanResultList.get(i).SSID + "  level:" + scanResultList.get(i).level + "是否连接:" + "否");mWifiList.add(newScanResultList.get(i));mAdapter.notifyDataSetChanged();}LogUtil.e("wifi名字:" + newScanResultList.get(i).SSID);}mAdapter.notifyDataSetChanged();}}, 6000);}/*** 返回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;}

手动刷新点击事件:

//刷新wifimScan_line.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ScanWifiInfo();}});

扫描wifi列表ok.

android 高版本(设备11的)wifi扫描,获取wifi列表相关推荐

  1. Android高版本P/Q/R源码编译指南

           Android高版本P/Q/R源码编译指南 Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.b ...

  2. CentOS 7 安装MuPDF(安装高版本gcc(11.2.1),安装opengl)

    CentOS 7 安装MuPDF(安装高版本gcc(11.2.1),安装opengl) MuPDF源码地址MuPDF 1.安装总结 #gcc $sudo yum -y install centos-r ...

  3. Android Studio WiFi 之 获取 WiFi 名称、IP、Mac

    Android 获取连接的WIFI 的一些数据(后期封装成aar 包给Unity 调用) 封装成AAR包,获取 Android 7.0 以上的 手机 mac 地址 一.Android 代码 impor ...

  4. 破解 WiFi,获取 WiFi 密码

    破解 WiFi,获取 WiFi 密码 破解 WiFi,获取 WiFi 密码 手动指令破解篇 1.查看自己的无线网卡名称 2.开启网卡监听模式 3.搜索周围wifi网络 4.抓取握手包 5.干扰连接设备 ...

  5. Android高版本使用DocumentFile读写外置存储的问题

    最近在维护项目,app遇到安装在高版本的Android时,以往直接授权和new File(path)的形式不再支持,日志也是说Permission denied.....好吧,换为DocumentFi ...

  6. Android高版本remount方法

    对于高版本的Android系统,不能直接remount,需要解锁后才能remount,记录下方法. sprd 1.进入bootloader adb reboot bootloader 2.获取当前手机 ...

  7. iOS-xcode支持高版本设备真机调试

    电脑没有升级的情况下,xcdoe不支持升级到最新版本,然而手机已经更新到新版,需要调试的情况下需要修改可支持设备列表的问价, 记录下每次都找不到设备列表的路径地址,备份下,省的每次都要百度... 需要 ...

  8. Android高版本网络请求失败 Cleartext HTTP traffic to xxx not permitted

    我可以失败,但是不可以有遗憾! ----泰语心说 今天升级build gradle的targetversion,发现升级完后,网络请求一直失败,而且用Charles抓包看,发现连网络请求都没有,后来在 ...

  9. android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...

    下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...

最新文章

  1. djongo:Django和MongoDB连接器
  2. 一些关于反汇编与逆向方面的博文分享
  3. windows 7 unmountable boot volume 解决方法
  4. cauchy problem of 1st order PDE from Partial Differential Equations
  5. 大厅安排(normal)
  6. 《RabbitMQ实战指南》笔误及改进记录
  7. E - 连连看 HDU - 1175(思维的深搜)
  8. python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)
  9. delete删除重复记录方法
  10. 【Linux】ubuntu 16 启动拨号上网
  11. .编写一个文件加解密程序,通过命令行完成加解 密工作
  12. 数学建模——相关系数(2)——假设检验
  13. IMDB 2003 07 12 最新排名
  14. php 自定义字段erp,在SuiteCRM中创建自定义字段类型
  15. wkt文件java解析_WKT文件解析 以及各个投影坐标的wkt参数查询 | 学步园
  16. 绝地反击 我的战胜贫困的经历01 转载 整理
  17. 计算机中的文件及文件命名规则,文件名的命名规则是什么
  18. 2018 Google 开发者大会.md
  19. Android Compose 实现渐变背景色
  20. KITTI自动驾驶数据集的训练和检测过程(人、车检测案例)、KITTI数据集的TFRecord格式存储、YOLO V3/Yolo V3 Tiny 迁移学习

热门文章

  1. 来了,最新微波通信系统频率使用规划调整即将施行!
  2. 傅里叶变换-F(f)和F(w)是一回事吗?
  3. 【报告分享】2021年Q1李宁品牌直播数据分析报告-知瓜数据(附下载)
  4. java-多线程(二)-生产者与消费者
  5. MacOS13刷新DNS缓存
  6. css 实现蒙版效果
  7. 怎么把pdf转成word?转换途径一览
  8. PEiD--查看导出函数
  9. 外汇天眼:投资200美元起 每天收益7%!千万别被蒙蔽双眼!
  10. HTML页面实现可编辑,保存,并生成PDF,完成签章。