Actualizaciones de ubicación que no funcionan en interiores como lo reclaman las API del proveedor de ubicaciones de Fusion

Problema:

Actualizaciones de ubicación que no funcionan en interiores como lo reclaman las API del proveedor de ubicaciones de Fusion.

Que pasó:

  1. He intentado implementar la API de ubicación más reciente para obtener actualizaciones de ubicación utilizando LocationClient en mi aplicación para Android.
  2. Mi aplicación Android funciona bien con cualquier problema mientras estoy probando al aire libre.
  3. Pero cuando pruebas en interiores (dentro de cualquier edificio), entonces no hay actualizaciones de ubicación están ocurriendo.

Comportamiento esperado:

Según las nuevas API, espero obtener alguna ubicación estimada alrededor del edificio mientras estoy en el interior (como el GPS no encuentra la señal de satélite para localización precisa).

Veo que la última aplicación de Google Maps android funciona bien en el interior con la ubicación estimada.

Pregunta:

¿Qué más debo tener cuidado al utilizar nuevas API de ubicación para obtener la actualización de la ubicación en interiores (la ubicación precisa no es necesaria, la precisión baja también es buena).

Estoy implementando la aplicación para Android usando las API de la versión 4.2.2 de Android. Estoy probando en HTC One X (OS v 4.1.1)

A continuación se muestra el código de Android que apliqué para obtener actualizaciones de ubicación mediante nuevas API:

Paso 1:

 mLocationClient = new LocationClient(this, this, this); 

Paso 2:

 // Create the LocationRequest object mLocationRequest = LocationRequest.create(); // Use high accuracy mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); // Set the update interval to 5 seconds mLocationRequest.setInterval(UPDATE_INTERVAL); // Set the fastest update interval to 1 second mLocationRequest.setFastestInterval(FASTEST_INTERVAL); 

Step3: dentro del método onStart() – debajo de la línea se añade:

 // Connect the client. mLocationClient.connect(); 

Paso 4: dentro del método onConnected() – debajo de la línea se agrega:

 mLocationClient.requestLocationUpdates(mLocationRequest, this); 

Paso 5: dentro del método onLocationChanged() – escuchando las actualizaciones de ubicación. Este método no se llama cuando se realizan pruebas internas. Este método se recibe sólo cuando se encuentra la señal GPS.

 double lat = location.getLatitude(); double lng = location.getLongitude(); 

Finalmente agregó permisos debajo en Android Manifest:

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Sobre la base de sus fragmentos de código me parece bien para recibir lugares en interiores.

Prueba a hacer un volcado mientras tu aplicación solicita ubicaciones y estás en el interior (esperando recibir ubicaciones pero no): adb shell dumpsys activity service com.google.android.location.internal.GoogleLocationManagerService

¿Puede publicar la salida aquí?

¿Puedes comprobar que la Configuración-> WiFi está habilitada y que la configuración-> Acceso a la ubicación-> Wi-Fi y la ubicación de la red móvil está habilitada (ambos son necesarios para la ubicación en interiores).

¿Su teléfono tiene una tarjeta SIM? Esto permitiría que las ubicaciones derivadas de torre de celda cuando wifi no está disponible.

Por último, dijiste que Google Maps te da una ubicación dentro del mismo edificio. ¿Cuál es el tamaño aproximado del círculo de precisión (es decir, está más cerca de 20 metros o 100 metros)?

Tinku Tengo el mismo problema con mis API Galaxy Nexus y Fusion Location Provider.
Mi decisión es establecer la prioridad del objeto LocationRequest.PRIORITY_LOW_POWER en LocationRequest.PRIORITY_LOW_POWER

  mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER); mLocationRequest.setInterval(UPDATE_INTERVAL); mLocationRequest.setFastestInterval(FASTEST_INTERVAL); mLocationClient = new LocationClient(this, this, this); 

Para mí funciona bien en interiores (baja precisión) y al aire libre (alta precisión). Espero que te ayude.

¿Está seguro de que no está desconectando al cliente? Una vez que desconecta el LocationClient, la solicitud de actualización de ubicación actual desaparece.

Los fragmentos de código por sí mismos no son una aplicación completa. La aplicación de ejemplo , sin embargo, es una aplicación de trabajo completa. El propósito de los fragmentos es mostrarle los pasos clave, desde los que puede cortar y pegar. La aplicación de ejemplo proporciona más material.

Después de largas pruebas y depuración en HTC One X (4.1.1), decidí probar los mismos casos de prueba en cualquier otro modelo de teléfono. Por suerte mi aplicación trabajó en interiores también cuando las pruebas con el Samsung S3 de mi amigo (4.1.1). Al mismo tiempo y la ubicación, cuando probé con mi HTC One X, no conseguir ubicación en el interior. Ambos teléfonos están configurados con la misma configuración (WiFi / GPS / red móvil habilitada).

Para confirmar esto es un problema con el dispositivo específico, he realizado muchas pruebas en el interior del edificio en diferentes esquinas usando mi aplicación y veo el mismo problema en mi HTC en todas las ubicaciones interiores (pero en las mismas ubicaciones S3 obtiene la ubicación interior).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.