Android中提供GPS定位服務(wù),同時開發(fā)者可以對獲得的位置信息進(jìn)行解析,可以獲得位置的詳細(xì)信息。
1.gps定位
在Eclipse中建立android應(yīng)用程序。android sdk中提供了locationmanager來獲得系統(tǒng)提供的定位服務(wù),可以通過gps、network等定位。通過下面的代碼能夠獲取location對象,而通過location可以獲得經(jīng)緯度信息。
1 LocationManager loactionmanager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
2 tv_msg=(TextView)findViewById(R.id.textView1);
3 Criteria criteria=new Criteria();
4 criteria.setAccuracy(Criteria.ACCURACY_FINE);
5 criteria.setAltitudeRequired(false);
6 criteria.setBearingRequired(false);
7 criteria.setCostAllowed(false);
8 criteria.setPowerRequirement(Criteria.POWER_LOW);
9 String provider=loactionmanager.getBestProvider(criteria, true);
10 Location location=loactionmanager.getLastKnownLocation(provider);
通過Criteria為對象指定一些參數(shù)。criteria提供若干方法:
(1)public void setAccuracy(int accuracy)
位置解析的精度。Criteria.Accuracy_Fine 精確模式,Criteria.Accuracy_Coarse 模糊模式。
(2)public void setAltitudeRequired(boolean altitude)
是否提供海拔高度信息
(3)public void setBearingRequired(boolean)
是否提供方向信息
(4)public void setPowerRequirement(int level)
電池消耗,無、低、中、高,參數(shù) Criteria. NO_REQUIREMENT, Criteria. POWER_LOW, Criteria.POWER_MEDIUM, or Criteria. POWER_HIGH
(5) public void setCostAllowed(boolean)
是否允許運行商計費。
2.gps位置解析
以前進(jìn)行位置解析的時候,有人通過訪問Google提供的服務(wù)進(jìn)行位置解析,那樣真的比較耗時,對于手機(jī)用戶來說,體驗真的很重要,今天無意中看見可以通過別的方法來進(jìn)行位置的解析。android sdk 中提供了 Geocoder類來進(jìn)行位置的解析。通過geocoder的getFromLocation(double lattitude,double longtitude,int maxresults)來獲取地址列表,三個參數(shù)分別為:緯度、經(jīng)度、返回的結(jié)果數(shù)。同時geocoder的getlocationfrom方法是同步的,因此,它們進(jìn)行查找時將會阻礙線程,所以不應(yīng)該放入UI線程,應(yīng)該放入后臺,也就是通過異步線程來實現(xiàn)。
1 public class GeocodeAddress extends AsyncTask
2 {
3
4 @Override
5 protected void onPreExecute() {
6 // TODO Auto-generated method stub
7 super.onPreExecute();
8 }
9 @Override
10 protected String doInBackground(Location... params) {
11 // TODO Auto-generated method stub
12 if(params[0]!=null)
13 {
14 Geocoder geocoder=new Geocoder(MainActivity.this);
15 try {
16 List
這里的geoceAddress 是繼承asynctask異步類,參數(shù)分別為:location,傳進(jìn)來的參數(shù)類型;Void,異步線程處理的進(jìn)度,String,返回的結(jié)果類型。
doInBackground(Params) :用來處理比較耗時的操作,返回結(jié)果
onPostExecute:獲取處理的結(jié)果,并可以進(jìn)行ui的更新。
onProgressUpdate:數(shù)據(jù)處理的進(jìn)度
3.位置反向解析
位置反向解析,是指通過位置信息獲取經(jīng)緯度地址。
List
參數(shù):locationname:位置的名稱信息,如南京大學(xué),北京大學(xué)等。
maxresults:返回的結(jié)果數(shù)。從1到5.
double lattitude=geoaddress.get(0).getLatitude(); //獲取緯度
double longtitude=geoaddress.get(0).getLongitude(); //獲取經(jīng)度
更多詳細(xì),請參照androidsdk文檔。