Android的GPS定位

我叫阿狸貓發表於2014-04-08
import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
	private LocationManager lm;
	private MyListener listener;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		//獲取位置管理服務
		lm = (LocationManager) getSystemService(LOCATION_SERVICE);
		//查詢條件
		Criteria criteria = new Criteria();
		//引數  ACCURACY_FINE:精確    ACCURACY_HIGH:比較精確  誤差小於100  ACCURACY_LOW:誤差小於500米   ACCURACY_MEDIUM:誤差在100-500米    ACCURACY_COARSE:初略的位置
		criteria.setAccuracy(Criteria.ACCURACY_FINE);//精確定位
		//獲取海拔資訊
		criteria.setAltitudeRequired(true);
		//設定用電量為高階別
		criteria.setPowerRequirement(Criteria.POWER_HIGH);
		//網路定位的時候設定,表示是否話費費用
		criteria.setCostAllowed(true);
		String provider = lm.getBestProvider(criteria , true);//第二個參數列示  返回可用的定位資訊   因為定位功能可能被關閉,被關閉的話就不可用了
		System.out.println("provider--->"+provider);
		
		
		/**
		 * 獲取使用者位置
		 * 1.用哪種方法定位,這裡的provider是由上面獲取的,系統自己計算出用哪個方法定位最好
		 * 2.兩次獲取位置資訊之間的間隔(推薦大於60秒  也就是600000   設定為0表示不關心時間  只要能得到位置資訊就獲取)
		 * 3.每隔幾米獲取一次位置資訊  0表示不關心  只要能獲取到位置資訊就獲取
		 */
		listener = new MyListener();
		lm.requestLocationUpdates(provider, 100, 1, listener);
	}
	  
	private class MyListener implements LocationListener{
		//當位置變化的時候呼叫該方法
		public void onLocationChanged(Location location) {
			float accuracy = location.getAccuracy();//精確度
			double latitude = location.getLatitude();//緯度
			double longitude = location.getLongitude();//經度
			
			TextView tv = new TextView(getApplicationContext());
			tv.setText("精確度-->"+accuracy+"\n緯度-->"+latitude+"\n經度-->"+longitude);
			setContentView(tv);
		}
		//當位置提供者不可用的時候呼叫該方法   例如使用者將定位功能手動關閉的時候
		public void onStatusChanged(String provider, int status, Bundle extras) {
			
		}
		//當位置提供者可用的時候呼叫該方法
		public void onProviderEnabled(String provider) {
			
		}
		//當狀態發生改變的時候呼叫該方法    可用--->不可用   不可用--->可用
		public void onProviderDisabled(String provider) {
			
		}
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		lm.removeUpdates(listener);//在關閉介面的時候,取消位置監聽
	}
}




相關文章