Android, Solicitud de ubicación, establecer la duración de caducidad no funciona
Estoy usando nueva API de ubicación que se había introducido en I / O 2013.
Funciona bien y no tengo ningún problema con sus resultados. Mi problema es cuando fijo setExpirationDuration(WHATEVER_MILLIS)
a cualquier millis sin embargo trabaja por un minuto.
- Obtención de coordenadas GPS más rápido mediante programación sin Internet, pero utilizando el proveedor de red y GPS móvil
- Android Geofencing error API con GPS?
- ¿Por qué no pude obtener coordenadas GPS en un lugar remoto?
- ¿Cómo actualizar la ubicación del GPS con frecuencia?
- Android: ¿Cómo llamo a startResolutionForResult de un servicio?
Este es mi código:
LocationRequest locationRequest = LocationRequest.create() .setInterval(10 * 60 * 1000) // every 10 minutes .setExpirationDuration(10 * 1000) // After 10 seconds .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
Cuando ejecuto la aplicación, el indicador de satélite se mostrará en la bandeja por lo que, espero verlo sólo 10 segundos. Sin embargo, desaparecerá después de un minuto.
Cualquier sugerencia o comentarios serán apreciados. Gracias.
- Necesidad de la actividad del androide para esperar hasta que la localización GPS obtenida
- Android: ¿Cómo obtener una altitud exacta?
- Frecuencia de actualización de Android GPS
- Android gps proveedor y gps icono
- Activar GPS de forma programática como la aplicación Android de Ola Cabs
- Android Google Map cómo comprobar si la ubicación del GPS está dentro del círculo
- Cómo superar la adquisición de señales GPS
- Cómo obtener coordenadas de GPS en Android?
Dado que parece ser un problema real en Android, una solución podría ser un controlador para eliminar actualizaciones de ubicación manualmente.
listHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0) { mLocationClient.removeLocationUpdates(MyActivity.this); //Location Updates are now removed } super.handleMessage(msg); } };
Después de solicitar las actualizaciones de ubicación (para una duración máxima de 10s), se llama a este Handler, por supuesto retrasado por 10s.
myLocationClient.requestLocationUpdates(...); listHandler.sendEmptyMessageDelayed(0, 10000);
Esto asegura, que después de 10s sus actualizaciones de ubicación se eliminan.
En la documentación ( https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#setExpirationDuration(long) )
Dice que: "La duración comienza inmediatamente (y no cuando la solicitud se pasa al cliente de ubicación), así que llame a este método de nuevo si la solicitud se reutiliza en un momento posterior".
Se podría esperar que esta duración se inicie cuando se llama a la siguiente línea:
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this);
Sin embargo, la documentación indica que esta duración comienza cuando se crea el objeto de petición.
- Aplicación para Android con direcciones de voz GPS
- ¿Qué puede ser una causa de java.net.SocketException: recvfrom falló: ETIMEDOUT?