android 高版本(设备11的)wifi扫描,获取wifi列表
需求场景:智能设备有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列表相关推荐
- Android高版本P/Q/R源码编译指南
Android高版本P/Q/R源码编译指南 Android源码编译系列博客: Android.bp你真的了解吗 Android.bp入门指南之Android.mk转换成Android.b ...
- 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 ...
- Android Studio WiFi 之 获取 WiFi 名称、IP、Mac
Android 获取连接的WIFI 的一些数据(后期封装成aar 包给Unity 调用) 封装成AAR包,获取 Android 7.0 以上的 手机 mac 地址 一.Android 代码 impor ...
- 破解 WiFi,获取 WiFi 密码
破解 WiFi,获取 WiFi 密码 破解 WiFi,获取 WiFi 密码 手动指令破解篇 1.查看自己的无线网卡名称 2.开启网卡监听模式 3.搜索周围wifi网络 4.抓取握手包 5.干扰连接设备 ...
- Android高版本使用DocumentFile读写外置存储的问题
最近在维护项目,app遇到安装在高版本的Android时,以往直接授权和new File(path)的形式不再支持,日志也是说Permission denied.....好吧,换为DocumentFi ...
- Android高版本remount方法
对于高版本的Android系统,不能直接remount,需要解锁后才能remount,记录下方法. sprd 1.进入bootloader adb reboot bootloader 2.获取当前手机 ...
- iOS-xcode支持高版本设备真机调试
电脑没有升级的情况下,xcdoe不支持升级到最新版本,然而手机已经更新到新版,需要调试的情况下需要修改可支持设备列表的问价, 记录下每次都找不到设备列表的路径地址,备份下,省的每次都要百度... 需要 ...
- Android高版本网络请求失败 Cleartext HTTP traffic to xxx not permitted
我可以失败,但是不可以有遗憾! ----泰语心说 今天升级build gradle的targetversion,发现升级完后,网络请求一直失败,而且用Charles抓包看,发现连网络请求都没有,后来在 ...
- android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...
下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...
最新文章
- djongo:Django和MongoDB连接器
- 一些关于反汇编与逆向方面的博文分享
- windows 7 unmountable boot volume 解决方法
- cauchy problem of 1st order PDE from Partial Differential Equations
- 大厅安排(normal)
- 《RabbitMQ实战指南》笔误及改进记录
- E - 连连看 HDU - 1175(思维的深搜)
- python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)
- delete删除重复记录方法
- 【Linux】ubuntu 16 启动拨号上网
- .编写一个文件加解密程序,通过命令行完成加解 密工作
- 数学建模——相关系数(2)——假设检验
- IMDB 2003 07 12 最新排名
- php 自定义字段erp,在SuiteCRM中创建自定义字段类型
- wkt文件java解析_WKT文件解析 以及各个投影坐标的wkt参数查询 | 学步园
- 绝地反击 我的战胜贫困的经历01 转载 整理
- 计算机中的文件及文件命名规则,文件名的命名规则是什么
- 2018 Google 开发者大会.md
- Android Compose 实现渐变背景色
- KITTI自动驾驶数据集的训练和检测过程(人、车检测案例)、KITTI数据集的TFRecord格式存储、YOLO V3/Yolo V3 Tiny 迁移学习