我正在使用新的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提供商?
答案 0 :(得分:3)
有没有办法迫使LocationClient使用GPS提供商?
不,因为LocationClient
的目的是混合来自多个来源(GPS,WiFi,手机信号塔,传感器等)的数据。
如果您需要速度,请使用LocationManager
并使用GPS_PROVIDER
,或Criteria
所说的支持速度的任何其他内容(例如,伽利略,某天,也许)。