Android 9(Pie)引入了wifi RTT ranging,用于基于wifi的凝胶定位。
在Android 8(Oreo)之前的版本中,应用程序会定期请求wifi扫描。此功能在Android 9中得到了throttled的广泛支持:前台应用现在可以在2分钟的时间内请求最多4次扫描;后台应用程序被限制为每30分钟对所有后台应用程序进行一次扫描。避免这种限制的唯一方法是NETWORK_SETTINGS
权限,但是,它是签名权限(我认为这意味着它需要使用与OS构建相同的密钥进行签名,而不管它是否是系统。应用程序),因此不适用于第三方应用程序。
我知道wifi RTT测距只能通过ScanResult
启动,因此我需要先运行wifi扫描。但是,我大概可以通过对几个RTT测距请求重用相同的扫描结果来绕过节流阀,但会在一段时间内没有获得新的wifi。
但是,文档中也提到了对WiFi RTT测距的限制,但是没有说明限制是什么。
最后,WifiManager.startScan()
is deprecated和应用可能不再能够在以后的版本中开始扫描。
问题:
ScanResult
的正确方法是什么,我需要启动RTT测距请求?答案 0 :(得分:0)
我还没有看到有关限制的任何文档,但是从Android源代码中至少可以看到以下内容:
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已关闭“问题跟踪”中的大多数WiFi节流线程,并带有注释“将用于改进未来的Android版本”,但是类似这样的活动: https://issuetracker.google.com/issues/112688545 你能在那儿提问题吗?