Skip to content

Latest commit

 

History

History
77 lines (63 loc) · 1.95 KB

获取位置(LocationManager).md

File metadata and controls

77 lines (63 loc) · 1.95 KB

获取位置(LocationManager)

  1. 需要申请权限
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  1. 代码
	public class TestgpsActivity extends Activity {
		private LocationManager lm;
		private MyListener listener;

		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main);
			lm = (LocationManager) getSystemService(LOCATION_SERVICE);

			Criteria criteria = new Criteria();
			criteria.setAccuracy(Criteria.ACCURACY_FINE);
			criteria.setCostAllowed(true);
			criteria.setPowerRequirement(Criteria.POWER_HIGH);
			criteria.setSpeedRequired(true);
			String provider = lm.getBestProvider(criteria, true);
			//第一个参数 位置提供者 第二个参数 最短更新时间 第三参数 最短的更新的距离
			listener = new MyListener();
			lm.requestLocationUpdates(provider, 0, 0, listener);

		}
		@Override
		protected void onDestroy() {
			lm.removeUpdates(listener);
			super.onDestroy();
		}

		private class MyListener implements LocationListener{

			/**
			 * 当位置改变的时候
			 */
			@Override
			public void onLocationChanged(Location location) {
				float accuracy = location.getAccuracy();
				double wlong = location.getLatitude(); //纬度
				double jlong = location.getLongitude(); //经度

				TextView tv = new TextView(getApplicationContext());
				tv.setText("经度:"+jlong+"\n"+"纬度:"+wlong+"\n"+ accuracy);
				setContentView(tv);

			}
			/**
			 * 某一个位置提供者的状态发生改变的时候调用的方法
			 */
			@Override
			public void onStatusChanged(String provider, int status, Bundle extras) {

			}

			@Override
			public void onProviderEnabled(String provider) {

			}

			@Override
			public void onProviderDisabled(String provider) {

			}
		}
	}