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

时间:2012-10-16 17:43:00

标签: android android-mapview locationmanager

我正在使用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);
}

我还有一个“回到当前位置按钮” - 当用户移动地图并希望快速返回当前位置时。

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

我可以保存最后一个选择的提供者,但条件可能每秒都会改变:

  1. 用户已关闭GPS
  2. 没有GPS信号
  3. NETWORK_PROVIDER在当前情况下更好
  4. 等。
  5. 什么是正确的方法?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可以随时使用此功能,但请务必检查 Location.getTime() - >这会告诉你它修复的时间,因此你可以轻松区分新的和陈旧的位置修复。