3

このコードは他の携帯電話でも正常に機能し、Android4.0.3を搭載したSamsungGalaxy S3でも正常に機能しますが、Android4.1.1を搭載したSamsungGalaxyS3では機能しません。

問題は、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 に答える