3

这段代码在其他手机上运行良好,在三星 Galaxy s3 和 android 4.0.3 上也能正常运行,但在三星 Galaxy S3 和 android 4.1.1 上运行不正常,知道吗?

问题是永远不会调用 onLocationChanged 方法。

返回的提供者是“网络”

/**
* @see android.app.Application#onCreate()
*/
@Override
public void onCreate() {
    locationManager = (LocationManager) this.getSystemService(getApplicationContext().LOCATION_SERVICE);
    String provider = getLocationProvider();
    locationManager.requestLocationUpdates(provider, 0, 20, locationListener);
}

/**
* @see android.location.LocationListener
*/
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
       currentLocationUser = location;
       if (onLocationListener != null) {
            onLocationListener.onLocationChanged(location);
       }
    }

   public void onStatusChanged(String provider, int status, Bundle extras) {

   } 

   public void onProviderEnabled(String provider) {

   }

    public void onProviderDisabled(String provider) {

    }
 };

public String getLocationProvider() {
    Criteria locationCriteria = new Criteria();
    locationCriteria.setAccuracy();
    return locationManager.getBestProvider(locationCriteria, true);
}
4

1 回答 1

1

我想建议LocationManager.removeUpdates()在请求更新之前使用新的时间。在 JELLYBEAN(4.1) 之后,更新之间的最短时间不再只是一个提示。

有关这方面的更多信息,请参阅位置管理器。

正如以下文档所述

在 Jellybean 之前, minTime 参数只是一个提示,一些位置提供程序实现忽略了它。从 Jellybean 及以后,Android 兼容设备必须遵守 minTime 和 minDistance 参数。

于 2012-12-05T12:06:50.423 回答