想了解网络已连接多长时间

时间:2011-12-01 18:54:58

标签: android

我使用以下函数获取Android设备的本地IP地址:

/**
 * Loops through all network interfaces to find one with a connection
 * @return the IP of the connected network device, on error returns null
 */
public String getIPAddress() 
{
    String strIPaddress = null;

    try 
    {
        Enumeration<NetworkInterface> enumNetIF = NetworkInterface.getNetworkInterfaces();
        NetworkInterface netIF = null;

        //loop whilst there are more interfaces
        while(enumNetIF.hasMoreElements()) 
        {
            netIF = enumNetIF.nextElement();

            for (Enumeration<InetAddress> enumIP = netIF.getInetAddresses(); enumIP.hasMoreElements();) 
            {
                InetAddress inetAddress = enumIP.nextElement();

                //check for valid IP, but exclude the loopback address
                if(inetAddress.isLoopbackAddress() != true)
                {
                    strIPaddress = inetAddress.getHostAddress();
                    break;
                }
            }
        }
    } 
    catch (SocketException e) 
    {
        Log.e(TAG, e.getMessage());
    }

    return strIPaddress;
}

但是,我还需要知道此IP地址已连接多长时间。 我搜索了InetAddress结构,找不到它: http://developer.android.com/reference/java/net/InetAddress.html

还有另一种方法可以找出本地IP地址存在/连接的时间吗?

2 个答案:

答案 0 :(得分:0)

AFAIK,您必须注意连接更改(通过ConnectivityManagerCONNECTIVITY_ACTION和您自己的BroadcastReceiver)并自行跟踪。

答案 1 :(得分:0)

您需要创建后台服务来处理监视并记录何时对ConnectivityManager进行更改。

请注意,您还需要确保服务在启动时启动(由意图android.intent.action.BOOT_COMPLETED触发);否则,它只会在用户启动服务后跟踪连接更改。