1. 程式人生 > >Android 根據IP地址獲取城市

Android 根據IP地址獲取城市

manifest中要加的permission和activity_main.xml 參照上。

MainActivity.java

package com.example.test;

import java.util.List;
import java.util.Locale;

import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.content.Context;
import android.widget.EditText;

public class MainActivity extends Activity {

	LocationManager lm;
	EditText et;
	LocationListener ll = new LocationListener(){
		public void onLocationChanged(Location location){
			updateView(location);
		}

		@Override
		public void onProviderDisabled(String provider) {
			// TODO Auto-generated method stub
			updateView(null);
		}

		@Override
		public void onProviderEnabled(String provider) {
			// TODO Auto-generated method stub
			Location l = lm.getLastKnownLocation(provider);
			updateView(l);
		}

		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {
			// TODO Auto-generated method stub
			
		}
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		et = (EditText)findViewById(R.id.et);
		lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
		String bestProvider = lm.getBestProvider(getCriteria(), true);
		Location l = lm.getLastKnownLocation(bestProvider);
		updateView(l);
		lm.requestLocationUpdates(bestProvider, 5000, 8, ll);
	}

	private Criteria getCriteria() {
		// TODO Auto-generated method stub
		Criteria c = new Criteria();
		c.setAccuracy(Criteria.ACCURACY_COARSE);
		c.setSpeedRequired(false);
		c.setCostAllowed(false);
		c.setBearingRequired(false);
		c.setAltitudeRequired(false);
		c.setPowerRequirement(Criteria.POWER_LOW);
		return c;
	}
	public void updateView(Location newLocation)
	{
		if(newLocation !=null){
			String latitude = String.valueOf(newLocation.getLatitude());
			String longitude = String.valueOf(newLocation.getLongitude());
			double Latitude = newLocation.getLatitude();
			double Longitude = newLocation.getLongitude();
			String city = getAddressbyGeoPoint(Latitude,Longitude);
			et.setText("您現在的位置是\n維度:");
			et.append(latitude);
			et.append("\n經度:");
			et.append(longitude);
			et.append("\n城市:");
			et.append(city);
		}
		else{
			et.getEditableText().clear();
		}
	}

	
	//從地址Geopoint取得Address
	public String getAddressbyGeoPoint(double Latitude, double Longitude)
	{
	  String strReturn = "";
	  try
	  {
	    /* 建立GeoPoint不等於null */
//	    if (gp != null)
//	    {
	      /* 建立Geocoder物件,用於獲得指定地點的地址 */
	      Geocoder gc = new Geocoder(MainActivity.this, Locale.getDefault());
	      
	      /* 取出地理座標經緯度*/
	      double geoLatitude = Latitude;
	      double geoLongitude = Longitude;
	      
	      /* 自經緯度取得地址(可能有多行)*/
	      List<Address> lstAddress = gc.getFromLocation(geoLatitude, geoLongitude, 1);
	      StringBuilder sb = new StringBuilder();
	      
	      /* 判斷地址是否為多行 */
	      if (lstAddress.size() > 0)
	      {
	        Address adsLocation = lstAddress.get(0);

	        for (int i = 0; i < adsLocation.getMaxAddressLineIndex(); i++)
	        {
	          sb.append(adsLocation.getAddressLine(i)).append("\n");  //精確的地址和附近的代表建築物
	        }
	        sb.append(adsLocation.getLocality()).append("\n");  //當前經緯度所在的城市(市)
//	        sb.append(adsLocation.getPostalCode()).append("\n");
//	        sb.append(adsLocation.getCountryName());
	      }
	      
	      /* 將取得到的地址組合後放到stringbuilder物件中輸出用 */
	      strReturn = sb.toString();
//	    }
	  }
	  catch(Exception e)
	  {
	    e.printStackTrace();
	  }
	  return strReturn;
	}
	

}

用到的jar包Android_Location_V1.1.1.jar

相關推薦

Android 根據IP地址獲取城市

manifest中要加的permission和activity_main.xml 參照上。 MainActivity.java package com.example.test; import java.util.List; import java.util.Loc

前端使用js根據ip地址獲取城市地理位置

                                  前端使用js根據ip地址獲取城市地理位置  

PHP開發小技巧②③—根據ip地址獲取城市

        這個方法我們用的還是比較多的,便於收集資訊用於資料探勘分析。此方法不光根據ip地址進行獲取當前城市還可以根據http請求獲取使用者的城市位置。         實現方法:主要是根據高德地圖API進行獲取,首先註冊成為高德地圖使用者,然後認證成為開發者,建

根據ip地址獲取城市

<?php /** * Created by PhpStorm. * User: xym * Date: 2018/1/15 * Time: 下午1:57 */ function getIPLoc_sina($queryIP){ $url = 'http:/

根據ip地址獲取所在省市城市地區的真實地址/php函式

/*獲取客戶端ip*/ function _get_ip(){ if (isset($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SER

根據IP地址定位城市

java: public class MainActivity extends AppCompatActivity { private TextView mText; private String mIPAddress; @Override prote

根據ip地址定位城市資訊

最近需要一個需求就是根據ip地址獲取使用者的地址資訊,搜尋了網上的方法,有H5定位和呼叫web api介面定位. 相比之下H5要求瀏覽器支援,在移動裝置上可以實現呼叫手機gps獲取位置資訊,精確度很高。web api定位可以定位到城市,相對來說精確度不高,對比了百度,高德,淘寶,新浪的web a

根據ip地址獲取地理位置及座標

根據ip獲取地理位置資訊,不用http和webservice介面,減少請求時間。我們可以利用了GeoLite2 庫,GeoLite2 資料庫是一個免費的 IP 地理定位資料庫,GeoLite2 Country 與 City 資料庫在每月的第一個週二更新。GeoLite2 AS

java根據ip地址獲取詳細地域資訊

網際網路有很多介面可以實現通過ip查詢到具體的位置,如下: 通過淘寶IP地址庫獲取IP位置 1. 請求介面(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 2. 響應資訊:(

java 根據IP地址獲取地理位置

1. 第三方API ps:下面引數ip:218.192.3.42 用於測試 淘寶API:http://ip.taobao.com/service/getIpInfo.php?ip=218.192.3.42 新浪API:http://int.dpool.sina.

java實現根據ip地址獲取地理位置

記錄學習使用,轉載地址:http://www.jb51.net/article/54287.htm 程式呼叫了“騰訊ip分享計劃”提供的介面,當然也可以改成ip138提供的介面,不過這兩個網站返回的字串格式有些不同,要分別做解析。 public String getAdd

android 根據網路來獲取外網ip地址及國家,地區的介面

新浪的IP地址查詢介面:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域測試方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?form

js獲取當前用戶IP地址城市

ip地址 spa city src 用戶 color key 引用 href 引用下面的js: <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> 直接獲取IP和城市名: ale

Java 根據 IP 地址獲取 位置 -- 使用 ip2region

首先在 maven 裡面引入 ip2region : <dependency> <groupId>org.lionsoul</groupId> <artifactId>ip2region</artifactId&

js如何獲取當前使用者訪問的ip地址以及城市地區?

引用下面的js: 直接獲取IP和城市名: alert(returnCitySN['cip'] + returnCitySN['cname']); 轉載地址:https://www.cnblogs.com/billybobby/p/6729799.html

伺服器獲取登入點的ip地址城市名稱

package njg.ssh.util; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp

根據ip地址和子網掩碼獲取廣播地址的java實現

/** * 獲取廣播地址 * */ public static String getBroadcastAddress(String subnet, String ip) { String[] ips = ip.split("\\."); String[]

百度地圖根據輸入地址獲取坐標

pan nav 慣性 nbsp 滾輪 tle ner .com 一次 首先新建一個html頁面,然後引用百度地圖api: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <titl

Spark案例之根據ip地址計算歸屬地二

之前的是單機版的根據ip地址計算歸屬地,當資料量小的時候還可以,但是在大資料實際生產中是不行的,必須將它改造成一個Spark程式,然後在Spark叢集上執行 Spark程式和單機版的程式不一樣,下面來仔細分析一下Spark程式的執行流程 首先是一個Spark叢集,叢集中有Master和

Spark案例之根據ip地址計算歸屬地一

1.需求 根據訪問日誌中的ip地址計算出訪問者的歸屬地,並且按照省份,計算出訪問次數,最後將計算好的結果寫入到Mysql中 2.思路分析   1)整理訪問日誌中的資料,切分出ip欄位,然後將ip欄位轉換成十進位制   2)載入ip地址的規則,取出有用的欄位,然後將