如何在android中通过ip获取地理位置?
有人知道是否存在使用公共IP获取android设备的估计地理位置(纬度、经度)的API吗 现在我可以通过以下方法获得IP地址:如何在android中通过ip获取地理位置?,android,geolocation,ip,Android,Geolocation,Ip,有人知道是否存在使用公共IP获取android设备的估计地理位置(纬度、经度)的API吗 现在我可以通过以下方法获得IP地址: private void getIPAddress(){ URL url; BufferedReader bufferedReader=null; InputStreamReader in=null; HttpURLConnection urlConnection = null; try { url = new U
private void getIPAddress(){
URL url;
BufferedReader bufferedReader=null;
InputStreamReader in=null;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://ip2country.sourceforge.net/ip2c.php?format=JSON");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
in = new InputStreamReader(urlConnection.getInputStream());
bufferedReader = new BufferedReader(in);
String line;
StringBuffer buffer = new StringBuffer();
while((line = bufferedReader.readLine()) != null) {
buffer.append(line);
buffer.append('\r');
}
bufferedReader.close();
in.close();
JSONObject json_data = new JSONObject(buffer.toString());
ip = json_data.getString("ip");
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
bufferedReader.close();
in.close();
} catch (IOException e) {}
if(urlConnection != null) {
urlConnection.disconnect();
}
}
}
感谢避免调用外部web服务。另一种方法是查询LocationManager.NETWORK\u提供程序
String provider = LocationManager.NETWORK_PROVIDER;
Location lastKnownLocation = locationManager.getLastKnownLocation(provider);
您可以使用Web服务请求您的ip位置。API以XML格式返回IP地址(国家、地区、城市、zipcode、纬度、经度)的位置和相关时区。您可以使用此链接()获取以下所有信息。提供的ip是您连接到的外部ip地址 JSON格式:(但您可以选择您的格式)
{
"ip": "xx.xxx.xxx.xx",
"country_code": "US",
"country_name": "United States",
"region_code": "XX",
"region_name": "XXX XXXX",
"city": "XXX XXXX",
"zip_code": "10XXX",
"time_zone": "America/New_York",
"latitude": 4X.XXXX,
"longitude": -7X.XXXX,
"metro_code": 501
}