DetailedState.VERIFYING_POOR_LINK代表什么

时间:2013-06-06 03:09:13

标签: java android

在Juice中,enum DetailedState添加了一个名为

的新状态
/** Link has poor connectivity. */
        VERIFYING_POOR_LINK

但这个状态代表什么?

搜索完整个项目后,我发现了这个:

WifiStateMachine.java中的子类VerifyingLinkState

class VerifyingLinkState extends State {
    @Override
    public void enter() {
        if (DBG) log(getName() + "\n");
        EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName());
        setNetworkDetailedState(DetailedState.VERIFYING_POOR_LINK);
        mWifiConfigStore.updateStatus(mLastNetworkId, DetailedState.VERIFYING_POOR_LINK);
        sendNetworkStateChangeBroadcast(mLastBssid);
    }
    @Override
    public boolean processMessage(Message message) {
        switch (message.what) {
            case WifiWatchdogStateMachine.POOR_LINK_DETECTED:
                //stay here
                break;
            case WifiWatchdogStateMachine.GOOD_LINK_DETECTED:
                try {
                    mNwService.enableIpv6(mInterfaceName);
                } catch (RemoteException re) {
                    loge("Failed to enable IPv6: " + re);
                } catch (IllegalStateException e) {
                    loge("Failed to enable IPv6: " + e);
                }

                setNetworkDetailedState(DetailedState.CONNECTED);
                mWifiConfigStore.updateStatus(mLastNetworkId, DetailedState.CONNECTED);
                sendNetworkStateChangeBroadcast(mLastBssid);
                transitionTo(mConnectedState);
                break;
            default:
                return NOT_HANDLED;
        }
        return HANDLED;
    }
}

在验证链接状态时,在enter()函数中,它将DetailedState设置为

DetailedState.VERIFYING_POOR_LINK

这将导致用户在连接非常好时感到困惑,无法获得如下图所示的状态消息。 enter image description here

虽然此消息只停留一段时间,然后迅速替换为“已连接”。但这个州的目标是什么?如果我未在enter()函数中将DetailedState设置为VERIFYING_POOR_LINK,则会有什么风险。

2 个答案:

答案 0 :(得分:0)

虽然我无法给出肯定(或保证)的答案..

我会说这意味着连接很弱(小于30%(?)信号)

编辑:

Android提供了避免/忽略低连接性接入点的能力 - 我假设此状态表明不应该使用该连接。

我没有看到忽视/忽视这种状态的任何风险。

编辑2:

根据最近的评论,我从android文档中摘录了这段摘录:

  

public static final NetworkInfo.DetailedState VERIFYING_POOR_LINK

     

在API级别16中添加链接连接不良。

可以在NetworkInfo.DetailedState

找到

答案 1 :(得分:0)

VERIFYING_POOR_LINK某些三星设备是Wi-Fi Smart Network Switch的一部分,如果条件恶劣,可以允许移动数据通过Wi-Fi保持连接。对于三星设备,当您看到详细状态时,从CONNECTED转到VERIFYING_POOR_LINK

大多数逻辑可以在http://androidxref.com/4.3_r2.1/xref/frameworks/base/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java

中找到
  

WifiWatchdogStateMachine监控与WiFi网络的连接。当WiFi   在L2层连接,来自接入点的信标到达设备及其   可以保持连接,但应用程序连接可能是不稳定的(由于   更大的数据包大小交换)。   

  我们现在使用丢包率监视WiFi上最后一跳的质量   一个指示器,用于确定链路是否足够好以切换到Wi-Fi作为上行链路。   

  当连接WiFi时,WiFi看门狗继续对RSSI和RSSI进行采样   即时数据包丢失,并按照每个AP丢失到rssi的统计信息进行记录。什么时候   即时数据包丢失高于阈值,WiFi看门狗发送一个   链接通知不良,暂时避免WiFi连接。   

  虽然WiFi正在被避免,但WiFi看门狗继续观看RSSI   带回WiFi连接。一旦RSSI足够高就可以达到   较低的丢包率,良好的链路检测发送使WiFi   连接再次可用。   

  BSSID漫游已被考虑在内。当用户移动时   多个AP,WiFi看门狗将检测到并继续观看   目前已连接AP。   

  功率影响应该是最小的,因为大部分测量依赖于已经在驱动器上跟踪的被动统计,并且当屏幕打开并且RSSI在一定范围内时进行轮询。