Android - 从LocationClient获取的位置不支持速度

时间:2013-06-21 15:30:04

标签: android gps location location-client

我正在使用新的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提供商?

1 个答案:

答案 0 :(得分:3)

  

有没有办法迫使LocationClient使用GPS提供商?

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

如果您需要速度,请使用LocationManager并使用GPS_PROVIDER,或Criteria所说的支持速度的任何其他内容(例如,伽利略,某天,也许)。