2

我正在使用新的 Google LocationClient 来检索地理位置。我需要获得每个点(位置)的速度。
我现在正在做的是:

if (mLocationClient == null) {
    mLocationClient = new LocationClient(this, mLocationCallback, mLocationCallback);
    mLocationCallback.setLocationClient(mLocationClient);
    if (!(mLocationClient.isConnected() || mLocationClient.isConnecting())) {
        mLocationClient.connect();
    }
}

其中 mLocationCallback 是

public class LocationCallback implements ConnectionCallbacks,
        OnConnectionFailedListener, LocationListener {}

在函数中,

    @Override
    public void onLocationChanged(Location location) {
        if (location == null) {
            Log.e(TAG, "onLocationChanged: location == null");
            return;
        }

        Log.i(TAG, "Location@ " + location.getLatitude() + ","
                   + location.getLongitude() + ", Altitude: "
                   + location.getAltitude() + "(" + location.hasAltitude()
                   + ")" + " Velocity: " + location.getSpeed() + " m/s("
                   + location.hasSpeed() + ")");
        }
}

但是,每次location.hasSpeed()都给false. 似乎只有 GPS 提供商提供速度。我确定我的 GPS 已开启,但它可能永远不会被使用。有没有办法强制 LocationClient 使用 GPS 提供程序?

4

1 回答 1

3

有没有办法强制 LocationClient 使用 GPS 提供程序?

不,因为它的重点LocationClient是混合来自多个来源(GPS、WiFi、手机信号塔、传感器等)的数据。

如果您需要速度,请使用LocationManager和使用GPS_PROVIDER,或其他任何Criteria支持速度的东西(例如,Galileo,也许有一天)。

于 2013-06-21T15:35:32.787 回答