Uso del servicio LocationClient de Google Play Services en segundo plano
Mi aplicación está diseñada para rastrear la ubicación del usuario periódicamente y enviarla al servidor. Recientemente he cambiado mi código con Google Play Services API de ubicación.
He creado el cliente de ubicación y conectado al servicio en onStartCommand
- Emulador de Android se reinicia cuando se envía una ubicación falsa
- Cálculo de distancia desde mi ubicación hasta la ubicación de destino en android
- Android O - Old empezar el servicio de primer plano sigue funcionando?
- No conectado. Llamar Conectar o esperar a que onConnected () sea llamado excepción dentro de onConnected?
- Obtener la ubicación de Android a través de wifi no funciona
public int onStartCommand(Intent intent, int flags, int startId) { setUpLocationClientIfNeeded(); if(!mLocationClient.isConnected() || !mLocationClient.isConnecting()) mLocationClient.connect(); return START_STICKY; }
Y en el método onConnected, envío una solicitud de ubicación,
@Override public void onConnected(Bundle arg0) { System.out.println("Connected ..."); mLocationClient.requestLocationUpdates(REQUEST, this); }
El objeto REQUEST es,
private static final LocationRequest REQUEST = LocationRequest.create() .setInterval(5*60*1000) // 5 minutes .setFastestInterval(3*60*1000) // 3 minutes .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
Ahora la cuestión es,
- El método onLocationChanged no se recibe en el intervalo dado, es decir, 5 minutos o el intervalo más rápido de 3 minutos. Desde el registro que pude ver, es conseguir llamados sólo dos veces o tres veces después de que no se llama en absoluto (me registré después de 1 hora).
¿Cuál es el problema con mi código anterior ?. (No podía ver ningún registro de 'desconectado' también)
- Para solucionar esto, traté de usar alarmmanager para llamar a la tarea periódicamente. Ahora cómo obtener una actualización de ubicación única a través de Locationclient desde un broadcastreceiver. (Locationclient.getLastlocation () sólo devuelve la última ubicación almacenada pero no solicita una nueva ubicación)
- Cómo comprobar la ubicación de Mock en Android Marshmallow?
- Número GPS de satélites y filtrado de ubicaciones
- Conmutación entre proveedor de red y GPS
- ¿Cómo obtener la latitud y longitud actuales sin utilizar el método getLastKnownLocation en Android?
- Obtener el nombre de la ciudad de la latitud y la longitud en androide da servicio no disponible Android 4.0.3?
- RuntimeException en el análisis de Gson JSON: Error al invocar java.lang.ClassLoader protegido () sin args
- Más de un proveedor de ubicación al mismo tiempo
- Android GeoCoder devuelve sólo 1 resultado
Código fuente completo para un servicio de fondo disponible aquí:
https://gist.github.com/blackcj/20efe2ac885c7297a676
Intenta agregar la super llamada a tu onStartCommand.
/** * Keeps the service running even after the app is closed. * */ public int onStartCommand (Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); setUpLocationClientIfNeeded(); if(!mLocationClient.isConnected() || !mLocationClient.isConnecting()) { mLocationClient.connect(); } return START_STICKY; }
- Creación de un SoftKeyboard con caracteres múltiples / alternativos por clave
- Creación de una biblioteca java con Eclipse