Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Wifi漫游连接序列_Android_Wifi_Roaming - Fatal编程技术网

Android Wifi漫游连接序列

Android Wifi漫游连接序列,android,wifi,roaming,Android,Wifi,Roaming,我正在维护一个与wifi网络相关的小应用程序。当手机连接到wifi网络时,它会测试互联网连接 在有两个相邻wifi网络(不同的SSID)的地方测试和使用应用程序时,覆盖范围略有重叠,HTC Desire运行Android 2.2.2,从wifi a移动到B时,断开和连接的顺序似乎是: 断开与wifi A的连接 连接到wifi B 现在,随着Fairphone运行4.2.2,顺序似乎是: 连接到wifi B 断开与wifi A的连接 这是否意味着与HTC Desire不同,Fairphone进行某

我正在维护一个与wifi网络相关的小应用程序。当手机连接到wifi网络时,它会测试互联网连接

在有两个相邻wifi网络(不同的SSID)的地方测试和使用应用程序时,覆盖范围略有重叠,HTC Desire运行Android 2.2.2,从wifi a移动到B时,断开和连接的顺序似乎是:

  • 断开与wifi A的连接
  • 连接到wifi B
  • 现在,随着Fairphone运行4.2.2,顺序似乎是:

  • 连接到wifi B
  • 断开与wifi A的连接
  • 这是否意味着与HTC Desire不同,Fairphone进行某种漫游,首先连接到信号比当前wifi连接信号更强的wifi,然后断开“旧”wifi连接


    我问这个问题,因为如果我的观察是正确的,这对应用程序的行为有一些影响,即它不应该考虑最后的WiFi连接事件,而是检查WiFi连接的实际状态,不管最后一个事件是“连接”还是“断开”。控制漫游行为。你可以看看它在做什么

    具体来说,为了回答您的问题,WLAN设备(在linux中)可以使用不同类型的驱动程序:

    • SoftMAC:MLME(媒体访问控制(MAC)子层管理实体)由软件管理
    • FullMAC:MLME在硬件中进行管理
    特别是一些MLME功能:

    • 鉴定
    • 取消认证
    • 员工
    • 解除关联
    • 重新结合
    因此,在不同的设备和Android版本(驱动程序类型、wpa_请求者)上,这些机制中的一些可能存在差异

    漫游的正确802.11行为是向新选择的AP发送重新关联请求。首先与AP解除关联然后与新AP关联的客户端实际上不支持802.11漫游,并通过SoftMac方法使用某种虚假漫游


    在标准漫游中,发送到站点的数据包不会丢失,而是从一个AP转发到漫游AP,以便漫游站点接收数据包。

    根据您的观察,我认为您应该更改代码。一些疯狂的设备甚至可能有不止一个WiFi适配器,你的代码也会准备好的。我见过很多不同android手机的WiFi行为。不同品牌,不同版本的Android,不同的wifi芯片。这两者之间有很多不同之处。因此,虽然特定手机的wifi行为是可预测的,但在手机之间则不是。如果你的应用程序依赖于特定的wifi行为,我建议你用你的应用程序测试足够数量的手机。谢谢。正如Merlevede所建议的,我已经更改了代码,使其在wifi连接的实际状态下运行,而不是在最新wifi事件报告的状态下运行,因此无论设备的任何特定行为如何,它都能正常工作,并且我的应用程序的行为可以通过单元测试来覆盖:-)