在Android P中弃用WifiManager中的startScan()

EAK*_*EAM 19 java android kotlin android-9.0-pie

如何从wifi获取扫描结果,例如每3秒,没有 mWifimanager.startScan();

谷歌说:

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

小智 12

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扫描.Android设备将不断连接到电源,这不是问题.该应用甚至不会在Play商店.我认为他们应该为这类应用程序提供一种解决方法.也许系统许可或类似的东西? (9认同)

Nin*_*les 7

我认为在API级别P他们计划将startScan()移动到不同的类(WifiScanner)以及一些关键差异.

请参阅:https://android.googlesource.com/platform/frameworks/base/+/android-p-preview-1/wifi/java/android/net/wifi/WifiScanner.java

如果有另一种解决方案,我也很乐意听到它.

目前,我可能只使用startScan()直到官方文档发布.


mea*_*dev 6

因为我提出谷歌问题79906367,startScan()在P上实际上是非常错误的.

我不认为WifiScanner也是替代品,因为它被标记为SystemApi,这意味着无法访问Apps ...

希望我们很快就能听到,因为RTT仍然意味着你需要使用ScanResult is80211mcResponder扫描支持802.11mc的AP ,你在AP上执行RTT测距之前检查它.