Android 9 (Pie) 引入了wifi RTT 测距,用于基于 wifi 的地理定位。
在 Android 8 (Oreo) 之前的版本中,应用程序会定期请求 wifi 扫描。此功能在 Android 9 中受到严重限制:前台应用程序现在可以在 2 分钟的窗口内请求最多 4 次扫描;后台应用程序被限制为每 30 分钟一次扫描所有后台应用程序的组合。避免这种限制的唯一方法是NETWORK_SETTINGS
权限,但是,它是签名权限(我认为这意味着它需要使用与操作系统构建相同的密钥进行签名,无论它是否是系统应用程序),因此不是可用于第三方应用程序。
我知道 wifi RTT 测距只能用 启动ScanResult
,因此我需要先运行 wifi 扫描。但是,我大概可以通过对几个 RTT 测距请求重复使用相同的扫描结果来绕过油门,但代价是一段时间内没有获得新的 wifi。
但是,文档还提到了 wifi RTT 范围的限制,但是没有具体说明限制是什么。
最后,WifiManager.startScan()
已弃用,应用程序可能无法在未来版本中开始扫描。
问题:
- 请求 wifi RTT 测距的限制是什么?
- 获取
ScanResult
我需要启动 RTT 测距请求的正确方法是什么?