每当我要求位置更新时,我应该使用android LocationManager.getBestProvider吗?

我正在使用Google API和MapActivity,MapView等。
当我需要得到我目前的位置时,我第一次使用这个代码:

myLocationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); // Sets the criteria for a fine and low power provider Criteria crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_FINE); crit.setPowerRequirement(Criteria.POWER_LOW); // Gets the best matched provider, and only if it's on String provider = myLocationManager.getBestProvider(crit, true); // If there are no location providers available if (provider == null){ OnClickListener listener = new OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Closes the activity finish(); } }; Utils.getInstance().showAlertDialog(this, R.string.warning_dialog_title, R.string.no_location_providers_error_message, android.R.drawable.ic_dialog_alert, false, listener); } // Location services is enabled else{ myLocationListener = new MyLocationListener(); myLocationManager.requestLocationUpdates( provider, 0, 0, myLocationListener); // TODO - put a marker in my location GeoPoint currentGeoPoint = MapUtils.getInstance(). getCurrentLocation(myLocationManager, provider); // Center to the current location centerLocation(currentGeoPoint, MAX_ZOOM); } 

我也有一个“返回当前位置button” – 当用户移动地图,并希望迅速返回到他的当前位置。

我的问题是,我应该每次使用getBestProvider()方法获取位置信息?

我可以挽救最后select的提供者,但条件可能每秒都在变化:

  1. 用户closures了GPS
  2. 没有GPS信号
  3. NETWORK_PROVIDER在当前情况下更好
  4. 等等..

什么是正确的方法?

Solutions Collecting From Web of "每当我要求位置更新时,我应该使用android LocationManager.getBestProvider吗?"

就像被告知的那样,这就是答案: http : //developer.android.com/guide/topics/location/strategies.html#BestEstimate

你总是可以使用这个,但是一定要检查Location.getTime() – >这会告诉你它被修复的时间,所以你可以很容易区分新鲜的和陈旧的位置修复。