6

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 测距请求的正确方法是什么?
4

1 回答 1

1

我还没有看到任何有关限制的文档,但是从 Android 源代码中您至少可以看到以下内容:

  • 后台应用程序限制为每 30 分钟一次
  • 每个应用程序最多可以有 20 个测距请求在队列中

Wifi RTT服务实现源码在这里: https ://android.googlesource.com/platform/frameworks/opt/net/wifi/+/android-9.0.0_r3/service/java/com/android/server/wifi/ rtt/RttServiceImpl.java

Google 已经关闭了 Issue Tracked 中的大部分 WiFi 限制线程,并附有评论“将用于改进未来的 Android 版本”,但也有这样的活动: https : //issuetracker.google.com/issues/112688545 你能提出你的问题吗那里?

于 2018-08-21T19:27:12.727 回答