Android LocationRequest: obtener una devolución de llamada cuando la solicitud caduca
Im me pregunto cómo coger el acontecimiento o lo que nunca cuando mi LocationReqest expiró, el código del heres entonces lo llamo
mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setExpirationDuration(500); mLocationRequest.setNumUpdates(1); mLocationClient.requestLocationUpdates(mLocationRequest, this);
Ahora necesito conseguir saber que mi LocationRequest era rotura, ty para la ayuda 🙂
- ¿Cómo obtener la ubicación exacta actual en android sin conexión a Internet?
- Android onLocationChanged location.getTime () devuelve el tiempo incorrecto
- ¿Cómo conseguir la ubicación gruesa usando Wifi o GSM o GPS, lo que esté disponible?
- Android LocationClient.getLastLocation () devuelve la ubicación antigua e inexacta con una nueva marca de tiempo
- Servicio de fondo con oyente de localización en android
editar
Pensé que podría cogerlo en
public void onLocationChanged(Location location) { //something is here }
Pero no funciona 🙁
Editar2
I parcial lo resolvió añadiendo el controlador que comprobar después de N + 500ms si la ubicación se estableció, todavía me pregunto si puedo hacerlo sin manejar
- ¿Por qué FusedLocationApi.getLastLocation null
- ¿Alarma de ubicación para Android?
- Android: Alerta de proximidad y consumo de batería
- NullpointerException al llamar a getSystemService (Context.LOCATION_SERVICE) y onLocationChanged no se llama
- Android: compruebe si los servicios de ubicación están habilitados utilizando el proveedor de ubicación fusionado
- GeoFence no activado con ubicación falsa
- ¿Necesito solicitar actualizaciones de ubicación al utilizar Geofences de ubicación fusionada?
- Cómo superar la adquisición de señales GPS
Usted tendrá que manejar usted mismo. Publicar un Runnable con un retraso inmediatamente después requestLocationUpdates como este:
mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setExpirationDuration(500); mLocationRequest.setNumUpdates(1); mLocationClient.requestLocationUpdates(mLocationRequest, this); mHandler.postDelayed(mExpiredRunnable, 500);
Aquí está el Runnable:
private final Runnable mExpiredRunnable = new Runnable() { @Override public void run() { showUnableToObtainLocation(); } };
El método showUnableToObtainLocation tendría cualquier lógica que quería ejecutar cuando no se pudo obtener una corrección de ubicación.
En el caso normal en el que realmente obtienes una corrección de ubicación, pones código en onLocationChanged para cancelar el Runnable:
mHandler.removeCallbacks(mExpiredRunnable);
También desearía este mismo código en su método onPause así como en caso de que la actividad / fragmento tenga un fondo antes de una corrección de ubicación O la solicitud caduque.