WifiManager 中的 startScan() 在 Android P 中已弃用
startScan() in WifiManager deprecated in Android P
如何在没有 mWifimanager.startScan();
的情况下每 3 秒从 wifi 获取扫描结果
Google 说:
startScan()
This method was deprecated in API level P. The ability for apps to trigger scan requests will be removed in a future release.
关于我正在使用的 API 级别的通知
List<ScanResult> results = mWifiManager.getScanResults();
不调用 startScan
,列表包含 wifi AP,但更新非常非常慢
更新至 2019 年 1 月 12 日:https://issuetracker.google.com/issues/112688545
我认为在 API 级 P 中,他们计划将 startScan() 移动到不同的 class (WifiScanner),同时还有一些关键差异。
如果有替代解决方案,我也很想听听。
目前,我可能只使用 startScan() 直到官方文档发布。
StartScan() 方法已在 Android P 中弃用,802.11mc 标准的新 RTT 协议必须与三边测量算法一起使用。
https://android-developers.googleblog.com/2018/03/previewing-android-p.html
需要知道AP的X,Y位置才能准确定位,AP应该支持802.11mc的Fine Time Measurement。 Intel® Wireless-AC 9260 支持 802.11mc 并且一些 AP 开始支持 802.11mc 标准。
举几个例子:
startScan() 实际上在 P 上有很多问题,因为我提出了 Google Issue 79906367。
我也不认为 WifiScanner 是替代品,因为它被标记为 SystemApi,这意味着应用程序无法访问...
希望我们能尽快听到消息,因为 RTT 仍然意味着您需要使用 ScanResult is80211mcResponder 扫描支持 802.11mc 的 AP,您在对 AP 执行 RTT 测距之前检查它。
Google 现在已经在 Android P:
中记录了 startScan() 函数的限制
“我们正在进一步限制应用可以请求的扫描次数,以提高网络性能并延长电池寿命。
WifiManager.startScan() 用法仅限于:
- 每个前台应用每 2 分钟限制为 4 次扫描。
- 所有后台应用合并限制为每 30 分钟扫描一次。"
来源:
https://issuetracker.google.com/issues/79906367
2018 年 8 月 8 日编辑:此处也添加了信息:
https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-throttling
来自WifiManager#EXTRA_RESULTS_UPDATED
Note: Apps holding android.Manifest.permission.NETWORK_SETTINGS permission are exempted from scan throttling.
注意:这是一个系统权限,如果没有生根并将应用程序移动到 'privileged' 位置或将其烘焙到自定义 ROM 中,普通应用程序无法使用它。
我认为 google 正计划限制应用程序扫描 wifi。
This method was deprecated in API level 28. The ability for apps to
trigger scan requests will be removed in a future release.
Check the documentation here.
我猜想 developers/users 至少在室内位置使用 WifiRttManager [1]。
或者依赖通常的 Google 播放位置服务,这在某些用例中是一个选项,但绝对不是全部。它针对一般用例进行了优化。没有用例是平均用例。
不幸的是,WifiRttManager 计算位置的方式要求 wifi 接入点具有 802.11mc。但是,您不需要连接到这些点。
今天几乎没有路由器有这个标准。 [2] [3] [4]
使用 3 个接入点,您可以获得接近 1-2 米的定位精度。
谁知道他们是否也会对此功能施加限制。
我很不高兴这个功能被从用户和开发人员手中夺走 - 它所需要的只是一个许可。
因此,在 802.11mc 普及之前,未来几年室内定位似乎将进入黑暗时代。
也许解决方法是让您连接的设备并对它们执行 ping 命令。
[1] https://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager
[2] https://github.com/Plinzen/android-rttmanager-sample
补充阅读
[3] https://en.wikipedia.org/wiki/IEEE_802.11mc
[4] https://fit-iot.com/web/wifi-indoor-positioning/
如何在没有 mWifimanager.startScan();
Google 说:
startScan()
This method was deprecated in API level P. The ability for apps to trigger scan requests will be removed in a future release.
关于我正在使用的 API 级别的通知
List<ScanResult> results = mWifiManager.getScanResults();
不调用 startScan
,列表包含 wifi AP,但更新非常非常慢
更新至 2019 年 1 月 12 日:https://issuetracker.google.com/issues/112688545
我认为在 API 级 P 中,他们计划将 startScan() 移动到不同的 class (WifiScanner),同时还有一些关键差异。
如果有替代解决方案,我也很想听听。
目前,我可能只使用 startScan() 直到官方文档发布。
StartScan() 方法已在 Android P 中弃用,802.11mc 标准的新 RTT 协议必须与三边测量算法一起使用。 https://android-developers.googleblog.com/2018/03/previewing-android-p.html
需要知道AP的X,Y位置才能准确定位,AP应该支持802.11mc的Fine Time Measurement。 Intel® Wireless-AC 9260 支持 802.11mc 并且一些 AP 开始支持 802.11mc 标准。
举几个例子:
startScan() 实际上在 P 上有很多问题,因为我提出了 Google Issue 79906367。
我也不认为 WifiScanner 是替代品,因为它被标记为 SystemApi,这意味着应用程序无法访问...
希望我们能尽快听到消息,因为 RTT 仍然意味着您需要使用 ScanResult is80211mcResponder 扫描支持 802.11mc 的 AP,您在对 AP 执行 RTT 测距之前检查它。
Google 现在已经在 Android P:
中记录了 startScan() 函数的限制“我们正在进一步限制应用可以请求的扫描次数,以提高网络性能并延长电池寿命。
WifiManager.startScan() 用法仅限于: - 每个前台应用每 2 分钟限制为 4 次扫描。 - 所有后台应用合并限制为每 30 分钟扫描一次。"
来源: https://issuetracker.google.com/issues/79906367
2018 年 8 月 8 日编辑:此处也添加了信息: https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-throttling
来自WifiManager#EXTRA_RESULTS_UPDATED
Note: Apps holding android.Manifest.permission.NETWORK_SETTINGS permission are exempted from scan throttling.
注意:这是一个系统权限,如果没有生根并将应用程序移动到 'privileged' 位置或将其烘焙到自定义 ROM 中,普通应用程序无法使用它。
我认为 google 正计划限制应用程序扫描 wifi。
This method was deprecated in API level 28. The ability for apps to trigger scan requests will be removed in a future release. Check the documentation here.
我猜想 developers/users 至少在室内位置使用 WifiRttManager [1]。 或者依赖通常的 Google 播放位置服务,这在某些用例中是一个选项,但绝对不是全部。它针对一般用例进行了优化。没有用例是平均用例。
不幸的是,WifiRttManager 计算位置的方式要求 wifi 接入点具有 802.11mc。但是,您不需要连接到这些点。 今天几乎没有路由器有这个标准。 [2] [3] [4] 使用 3 个接入点,您可以获得接近 1-2 米的定位精度。
谁知道他们是否也会对此功能施加限制。 我很不高兴这个功能被从用户和开发人员手中夺走 - 它所需要的只是一个许可。
因此,在 802.11mc 普及之前,未来几年室内定位似乎将进入黑暗时代。 也许解决方法是让您连接的设备并对它们执行 ping 命令。
[1] https://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager [2] https://github.com/Plinzen/android-rttmanager-sample
补充阅读 [3] https://en.wikipedia.org/wiki/IEEE_802.11mc [4] https://fit-iot.com/web/wifi-indoor-positioning/