Android中提供GPS定位服務(wù),同時(shí)開(kāi)發(fā)者可以對(duì)獲得的位置信息進(jìn)行解析,可以獲得位置的詳細(xì)信息。
1.gps定位
在Eclipse中建立android應(yīng)用程序。android sdk中提供了locationmanager來(lái)獲得系統(tǒng)提供的定位服務(wù),可以通過(guò)gps、network等定位。通過(guò)下面的代碼能夠獲取location對(duì)象,而通過(guò)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);
通過(guò)Criteria為對(duì)象指定一些參數(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)
電池消耗,無(wú)、低、中、高,參數(shù) Criteria. NO_REQUIREMENT, Criteria. POWER_LOW, Criteria.POWER_MEDIUM, or Criteria. POWER_HIGH
(5) public void setCostAllowed(boolean)
是否允許運(yùn)行商計(jì)費(fèi)。
2.gps位置解析
以前進(jìn)行位置解析的時(shí)候,有人通過(guò)訪問(wèn)Google提供的服務(wù)進(jìn)行位置解析,那樣真的比較耗時(shí),對(duì)于手機(jī)用戶來(lái)說(shuō),體驗(yàn)真的很重要,今天無(wú)意中看見(jiàn)可以通過(guò)別的方法來(lái)進(jìn)行位置的解析。android sdk 中提供了 Geocoder類(lèi)來(lái)進(jìn)行位置的解析。通過(guò)geocoder的getFromLocation(double lattitude,double longtitude,int maxresults)來(lái)獲取地址列表,三個(gè)參數(shù)分別為:緯度、經(jīng)度、返回的結(jié)果數(shù)。同時(shí)geocoder的getlocationfrom方法是同步的,因此,它們進(jìn)行查找時(shí)將會(huì)阻礙線程,所以不應(yīng)該放入U(xiǎn)I線程,應(yīng)該放入后臺(tái),也就是通過(guò)異步線程來(lái)實(shí)現(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異步類(lèi),參數(shù)分別為:location,傳進(jìn)來(lái)的參數(shù)類(lèi)型;Void,異步線程處理的進(jìn)度,String,返回的結(jié)果類(lèi)型。
doInBackground(Params) :用來(lái)處理比較耗時(shí)的操作,返回結(jié)果
onPostExecute:獲取處理的結(jié)果,并可以進(jìn)行ui的更新。
onProgressUpdate:數(shù)據(jù)處理的進(jìn)度
3.位置反向解析
位置反向解析,是指通過(guò)位置信息獲取經(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ì),請(qǐng)參照androidsdk文檔。