android n wifi scan,Android WiFi扫描
Wifi扫描
权限方面
必须权限如下:
ACCESS_WIFI_STATE(用于扫描结束后读取wifi信息)
CHANGE_WIFI_STATE(用于扫描WiFi列表)
除必须权限外,根据系统版本,还有不同的限制。具体如下
Android 8.0 & 8.1
WifiManager.getScanResults() 方法的调用必须具备以下任一权限:
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
CHANGE_WIFI_STATE
事实上,从6.0开始,WifiManager.getScanResults() 方法就需要定位权限了。见[硬件标识符访问权]
否则会抛异常SecurityException。
Android 9.0
WifiManager.startScan() 方法的调用必须满足以下所有条件:
拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限
拥有 CHANGE_WIFI_STATE 权限
打开定位服务
否则会抛异常SecurityException。
Android Q & later
在9.0版限制的基础上,对定位的要求升级为:必须拥有精确定位权限(ACCESS_FINE_LOCATION)
频率方面
Android对WifiManager.startScan()的调用频率进行了限制。对于超过此频率的接口访问,WifiManager 不会执行完整扫描,而是提供上次扫描所缓存的结果。
Android 8.0 & 8.1
每个后台应用:1次/30分钟
Android 9.0 & later
每个前台应用:4次/2分钟
所有后台应用加起来:1次/30分钟
WiFi扫描的实现步骤
注册系统广播接收器,触发扫描动作【WifiManager.startScan()】
系统扫描结束后会发送广播,等待接收广播
收到广播后,获取扫描结果【WifiManager.getScanResults()】
扫描耗时统计
厂商
机型
系统
扫描个数
耗时(ms)
三星
Note 3
5.0
26
4034
三星
Galaxy A7
6.0
21
1111
三星
S6
7.0
39
2302
三星
S7
8.0
5
1411
三星
S8 plus
9.0
50
1467
谷歌
Pixel 2 xl
Q
37
2233
魅族
M5 Note
6.0
18
5576
魅族
M15
7.1.2
61
2480
华为
荣耀 畅玩4X
5.0
1
305
华为
MT7-TL10
6.0
74
2531
华为
Mate8
7.0
4
2232
华为
荣耀V9
8.0
3
1238
华为
畅享7S
9.0
6
605
OPPO
R7s
5.1
3
960
OPPO
R9S plus
6.0
3
2636
OPPO
R11
7.1.1
46
1551
小米
MI PAD 2
5.1
66
4423
小米
RedMi Note4x
6.0
170
5086
VIVO
Y51A
5.0
1
830
VIVO
Y55A
6.0
9
1185
VIVO
X9
7.1
10
2802
VIVO
Y97
8.1
5
2668
VIVO
X21i A
9.0
17
1181
平均值:2211
总结
wifi扫描有两个必须权限:
ACCESS_WIFI_STATE(用于扫描结束后读取wifi信息)
CHANGE_WIFI_STATE(用于扫描WiFi列表)
另外,随着Android系统的升级,对WiFi扫描做了越来越严格的限制。系统对 WifiManager.getScanResults() 和 WifiManager.startScan() 所做的限制不太一样,但若要实现一个完整的WiFi扫描,就需要“扫描+获取”两个步骤,因此综合来看,WiFi扫描的行为变化如下:
6.0开始
需要至少一个定位权限
8.0开始
需要以下权限中至少一个:
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
CHANGE_WIFI_STATE
9.0开始
需要同时满足以下所有条件:
拥有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限
拥有 CHANGE_WIFI_STATE 权限
打开定位服务
Q开始
在9.0版限制的基础上,对定位的要求升级为:必须拥有精确定位权限(ACCESS_FINE_LOCATION)
注意:以上是官方文档的说明,与实际测试的结果有出入,可能是手机厂商修改rom导致。
实际测试结果
6.0开始,有如下要求:
必须有至少一个定位权限(ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION)
(Nexus7 6.0.1不开定位拿不到)
7.1.1开始,有如下要求:
必须有至少一个定位权限(ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION)
必须有 CHANGE_WIFI_STATE 权限
必须开启定位服务(魅族M15 、oppo A83)
(小米MIX2 8.0,三星N9600 8.1.0下,不开定位服务也能获取到WiFi列表)
Q开始,有如下要求:
必须有精确定位权限(ACCESS_FINE_LOCATION)
android n wifi scan,Android WiFi扫描相关推荐
- 测试apk-异常管控WiFi Scan攻击者开发
1. 目的 基于<软件绿色联盟应用体验标准>中 WiFi scan 资源的定义,对 WiFi scan 后台持续扫描的测试apk.旨在触发手机中异常功耗管控机制. 没有弹出消息通知,但是确 ...
- (一百三十五)Android O探索WLAN扫描(WIFI SCAN ALWAYS)
1.界面信息 小米mix2 WLAN扫描开关位于设置-更多设置-系统安全-位置信息-扫描,截图如下 2.流程梳理 搜索字符串 jiatai@jiatai:~/expand/aosp/aosp/pack ...
- android 图片热点区域,Android开发之扫描附近wifi热点并列表显示
最近项目中用到了wifi模块,今天做一个简单的总结. 参考:http://www.2cto.com/kf/201310/253617.html 1.怎样获取wifi对象并进行操作 要操作WIFI设备, ...
- android wifi 扫描频率,Android WIFI扫描时延
希望大家能够给个评论,支持下新人,感激不尽. 本文第一篇CSDN博客,欢迎大家关注,如有错误,欢迎批评指正. 本人在做WIFI室内定位时发现Android扫描WIFI的时延不小.在此先附上我扫描wif ...
- android获取连接wifi名称,android 获取当前连接WIFI名称的有关问题
android 获取当前连接WIFI名称的问题 我在程序内通过以下方法获取当前连接的WIFI名称(SSID),这个也是网上找别人的,但在我程序内就获取不到呢? 1.在AndroidManifest.x ...
- android 十八 蓝牙及Wi-Fi
视频课:https://edu.csdn.net/course/play/7621 学习内容 Ø 蓝牙的基本概念 Ø Android中蓝牙的应用 能力目标 Ø 了解蓝牙的基本概念 Ø 掌握Androi ...
- android wpa2 wifi,让Android WiFi支持中文
先要 弄清楚以下几点: 一. Android显示的WiFi名字,计算机都是以二进制处理的数据的,所以接受到的这个名字一定是一个二进制数据,它是怎么变成字符串的呢? 在frameworks/base/w ...
- 【Android开发】wifi开关与wifi连接(密码连接)
过放荡不羁的生活,容易得像顺水推舟,但是要结识良朋益友,却难如登天.-- 巴尔扎克 本文demo来自网络,找了好久找到的,后面自己做了些许修改,这里对源码解析,愧于忘记哪里出来了,感谢作者! 接下来就 ...
- android 5.0 wifi移植,android wifi移植
手动加载驱动 ####16th,Jul 驱动加载 modprobe libertas modprobe libertas_sdio 加载第二行时出错拉 # modprobe libertas_sdio ...
最新文章
- 难道说,这就是专业程序员的办公桌?
- 23个MySQL常用查询语句
- QT设置坐标轴XY轴显示范围方法
- QT Creator应用程序开发——01简单按钮显示
- linux uniq命令_如何在Linux上使用uniq命令
- 【javascript】DOM操作方法(3)——document节点属性
- ❤️JavaScript系列6部曲:流程控制(万字长文)❤️
- 7-107 汉诺塔的非递归实现 (25 分)
- 阿里巴巴为什么选择Apache Flink?
- php7 错误处理,PHP7升级-异常错误处理
- 什么是去中心化?交易所为什么要去中心化?
- DirectX 发展历程
- 在Spring IoC中,依赖注入和依赖查找的数据来源区别
- 一年读完100本书(5/100)《创新者的窘境》2021-02-25
- 2015火车票抢票,放票时间,几点放票
- JAVA 中文简体繁体转换
- 使用shell脚本删除rabbitMq的exchange
- perspective 3D 效果和动画配合
- 暑期实训心得及总结_史国旭
- 【CF718E】Matvey's Birthday BFS+动态规划