我使用以下函数获取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地址存在/连接的时间吗?
答案 0 :(得分:0)
AFAIK,您必须注意连接更改(通过ConnectivityManager
,CONNECTIVITY_ACTION
和您自己的BroadcastReceiver
)并自行跟踪。
答案 1 :(得分:0)
您需要创建后台服务来处理监视并记录何时对ConnectivityManager进行更改。
请注意,您还需要确保服务在启动时启动(由意图android.intent.action.BOOT_COMPLETED触发);否则,它只会在用户启动服务后跟踪连接更改。