0

Fused Location API を使用して位置情報の更新を取得しました。setTimeInterval に基づいてLocationRequestを設定しているときに更新を取得しています。しかし、10m 移動の最新情報だけが必要です。だから私は setSmallestDisplacement(10) を配置しました。しかし、 setSmallestDisplacement(10 )を配置すると、更新が得られませんでした。以下は私の LocationUpdate クラスです

public class LocationManger implements
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener {

GoogleApiClient mLocationClient;
Location mCurrentLocation;
LocationRequest mLocationRequest;
Context mContext;


public LocationManger(Context context) {
    super();
    mLocationClient = new GoogleApiClient.Builder(context)
            .addApi(LocationServices.API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    mContext = context;
}


@Override
public void onLocationChanged(Location location) {
    mCurrentLocation = location;

}


@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    Helper.showToast("failed", mContext);

}

@Override
public void onConnected(Bundle arg0) {

if (mLocationRequest == null) {
        mLocationRequest = LocationRequest.create();
         mLocationRequest.setSmallestDisplacement(10);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    }

    LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, this);

}

@Override
public void onConnectionSuspended(int i) {
    mLocationClient.connect();

}

/**
 * Function to start the location updates
 */
public void startLocationUpdates() {
    if (!mLocationClient.isConnected())
        mLocationClient.connect();
}

/**
 * function to stop the location updates
 */
public void stopUpdatingLocation() {
    if (mLocationClient.isConnected()) {

     LocationServices.FusedLocationApi.removeLocationUpdates(mLocationClient, this);
    }
    mLocationClient.disconnect();

}

/**
 * function to get the current latitude
 */
public double getCurrentLatitude() {
    if (mCurrentLocation != null) {
        return mCurrentLocation.getLatitude();
    }
    return 0;

}

/**
 * function to get the current longitude
 */
public double getCurrentLongitude() {
    if (mCurrentLocation != null) {
        return mCurrentLocation.getLongitude();
    }
    return 0;
}

/**
 * function to get the current location
 */
public Location getCurrentLocation() {
    return LocationServices.FusedLocationApi.getLastLocation(mLocationClient);
}

}

どなたか解る方がいらっしゃいましたら解決策を教えてください。前もって感謝します

4

1 に答える 1

0

setFastestInterval(0) を使用して、setInterval で呼び出されるよりも頻繁に更新できるようにします。そうしないと、ディスプレイスメントからの更新が見逃されます

于 2015-11-25T04:14:09.073 に答える