当前位置: 代码迷 >> Android >> Android 定位的三种模式
  详细解决方案

Android 定位的三种模式

热度:79   发布时间:2016-05-01 20:46:19.0
Android 定位的三种方式
	// 声明LocationManager对象		LocationManager loctionManager;		// 通过系统服务,取得LocationManager对象		loctionManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

方式一:
// 通过GPS位置提供器获得位置String providerGPS = LocationManager.GPS_PROVIDER; Location location = loctionManager.getLastKnownLocation(providerGPS);

方式二:
// 通过基站位置提供器获得位置String providerNetwork = LocationManager.NETWORK_PROVIDER;Location location = loctionManager.getLastKnownLocation(providerNetwork);

方式三:
		// 使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置		Criteria criteria = new Criteria();		criteria.setAccuracy(Criteria.ACCURACY_FINE);// 高精度		criteria.setAltitudeRequired(false);// 不要求海拔		criteria.setBearingRequired(false);// 不要求方位		criteria.setCostAllowed(true);// 允许有花费		criteria.setPowerRequirement(Criteria.POWER_LOW);// 低功耗		// 从可用的位置提供器中,匹配以上标准的最佳提供器		String provider = loctionManager.getBestProvider(criteria, true);		// 获得最后一次变化的位置		Location location = loctionManager.getLastKnownLocation(provider);		

处理:
// 显示在EditText中		updateWithNewLocation(location);		// 监听位置变化,2秒一次,距离10米以上		loctionManager.requestLocationUpdates(provider, 1000, 1, locationListener);

监听器及显示:
// 位置监听器	private final LocationListener locationListener = new LocationListener() {		@Override		public void onStatusChanged(String provider, int status, Bundle extras) {		}		@Override		public void onProviderEnabled(String provider) {		}		@Override		public void onProviderDisabled(String provider) {		}		// 当位置变化时触发		@Override		public void onLocationChanged(Location location) {			// 使用新的location更新TextView显示			updateWithNewLocation(location);		}	};	private void updateWithNewLocation(Location location) {		if (location != null) {			double lat = location.getLatitude();			double lng = location.getLongitude();			latStr = format.format(lat);			lonStr = format.format(lng);			txtLat.setText(latStr);			txtLon.setText(lonStr);		} else {			txtLat.setText("");			txtLon.setText("");		}	}
  相关解决方案