android.net.wifi.WifiManager
使用startScan()
方法对WiFi频道执行被动扫描,并在扫描完成时调用onReceive()
方法来访问WiFi频道读数。
然而,正如this webpage所显示的那样,我已经通过我自己的代码实现证实了,WiFi通道的被动扫描在不同的手机上需要不同的时间。有时,某些平台的速度甚至要慢10倍......
我想知道导致手机使用这么多时间的原因。是司机吗?这是一些节能功能吗?或者他们中没有一个和一些非常不同的原因是什么?
答案 0 :(得分:1)
文章给你一个提示:
无源扫描执行速度较慢,因为设备需要 在某段时间听取每个频道,等待 广播信标。信标帧由AP定期发送 宣布存在无线局域网。信标帧包含所有 有关其网络的信息。这种方法消耗更少的能量, 因为收音机不使用收发器,而只使用收发器。它 也需要更多的时间来完成,因为它必须倾听每一个 信道。
每个设备的某段时间不同。如果你在频道上听的时间太短,你可能会错过一个信标帧。用户首次扫描新位置时,可能需要一段时间才能枚举所有可用的AP。
此外,我没有看到有关如何生成这些结果的实际细节。有人可能会想到,智能算法在首次进入新位置时会使用较长的收听时间,但在其存在一段时间之后会转换为较短的收听时间。
答案 1 :(得分:0)
看看这篇文章,以便更好地了解WiFi扫描的工作原理:http://jhshi.me/2014/04/25/how-android-wifi-state-machine-works/ 扫描时间实际上取决于供应商对wpa_supplicant的实现以及框架的配置。