traduccion - location tracking android developer
Android: las ubicaciones obtenidas de LocationClient no son compatibles con la velocidad (1)
¿Hay alguna manera de forzar a LocationClient a usar el proveedor de GPS?
No, porque el objetivo de LocationClient
es combinar datos de múltiples fuentes (GPS, WiFi, torres de telefonía móvil, sensores, etc.).
Si necesita velocidad, use LocationManager
y trabaje con GPS_PROVIDER
, o cualquier otra cosa que Criteria
diga que admite velocidad (por ejemplo, Galileo, algún día, tal vez).
Estoy usando el nuevo Google LocationClient para recuperar ubicaciones geográficas. Y necesito obtener velocidad para cada punto (ubicación).
Lo que estoy haciendo ahora es:
if (mLocationClient == null) {
mLocationClient = new LocationClient(this, mLocationCallback, mLocationCallback);
mLocationCallback.setLocationClient(mLocationClient);
if (!(mLocationClient.isConnected() || mLocationClient.isConnecting())) {
mLocationClient.connect();
}
}
Donde mLocationCallback es una instancia de
public class LocationCallback implements ConnectionCallbacks,
OnConnectionFailedListener, LocationListener {}
En la función,
@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() + ")");
}
}
Sin embargo, cada vez que location.hasSpeed()
da false
. Parece que solo el proveedor de GPS da velocidad. Estoy seguro de que mi GPS está encendido, pero puede que nunca lo use. ¿Hay alguna manera de forzar a LocationClient a usar el proveedor de GPS?