2016-03-02 32 views
1

对于我的论文,我需要测量连接到WiFi AP的每个阶段需要多长时间。在Android中测量DHCP时间

我可以很容易地使用SUPPLICANT_STATE_CHANGED_ACTION来测量所有内容,但我很难弄清楚如何测量获取DHCP信息所需的时间。

我只是真的需要知道一定的精度,当Android设备获得一个新的IP。我尝试过使用CONNECTIVITY_ACTION,并在BroadcastReceiver内部检查IP地址,但至少关闭1秒,所以不要太精确。

还有一件事情,如果它是相关的:我将做测试的AP将不会有互联网连接。

任何想法如何做到这一点?

在此先感谢

回答

1

我设法解决这个问题的方式如下:

创建一个过滤器,WifiManager.NETWORK_STATE_CHANGED_ACTION

当有一个新的事件,我检查了以下方法:

if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){ 
    elapseTime = System.currentTimeMillis() - startTime; 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
    int ipAddress = wifiInfo.getIpAddress(); 
    if (ipAddress != 0 && !wifiConnected) { 
    wifiConnected = true; 
    wifiTimeLog = wifiTimeLog + elapseTime + "," + "DHCP Done" + "\n"; 
    state.setText(wifiTimeLog); 
} 

wifiConnected是一个布尔值,在测试之前设置为false。获得IP后还有其他触发器发生。