Android es la lista negra de nuestra ubicación
Hemos creado un LocationListener en nuestra aplicación. A veces, el teléfono entra en una "brecha de GPS" y simplemente deja de reportar datos de ubicación. Hemos observado por un tiempo y lo único que parece moverlo de este estado es reiniciar el teléfono.
Los enganché para conseguir los registros y encontré esto:
- Cómo obtener la ubicación de gps android
- Android: CellID no está disponible en todas las compañías?
- Servicios de Google Play o Servicios de ubicación de Android
- Compruebe si una ubicación GPS está dentro de un cierto radio de otra ubicación GPS en android
- LocationClient getLastLocation () devolver null
02-18 13:35:43.671 703 948 I LocationManagerService: handleLocationChanged for android.uid.system:1000, Provider: passive 02-18 13:35:43.671 703 948 I LocationManagerService: handleLocationChanged for com.google.uid.shared:10040, Provider: passive 02-18 13:35:43.671 703 948 I LocationManagerService: handleLocationChanged for com.google.uid.shared:10040, Provider: passive 02-18 13:35:43.671 703 948 D LocationManagerService: dropping location (blacklisted): com.google.android.apps.maps matches com.google.
Mirando los archivos fuente mencionados, simplemente verifica una lista negra que crea y evidentemente no informa del punto si está en la lista negra.
Mirando el código y lo anterior parece que su bloqueo de datos de ubicación para cualquier cosa com.google, pero no sé por qué.
Busqué y no encontré nada en esto y esperaba algo de ayuda.
- Cómo mantener la aplicación en ejecución en segundo plano? Seguir recogiendo datos?
- ¿Necesito solicitar actualizaciones de ubicación al utilizar Geofences de ubicación fusionada?
- ¿Dónde guardar los puntos GPS de Android (latitud, longitud)?
- Fused Location API da Lat Inaccurate, Largo cuando traza en el mapa es un poco lejos de la ruta de la carretera, incluso para el valor de baja exactitud
- GPS de seguimiento de Android y WakeLock
- ¿Existe un servicio o una aplicación de Android que sea similar al servicio de ubicación de cambios significativos de IOS?
- GPS android requestLocationUpdate
- Control de emulador desactivado con dispositivo Android real
Debe conectar su teléfono a un IDE y reiniciarlo mientras observa los cambios lógicos que podrían estar contribuyendo a la prohibición de la ubicación. Creo que la razón probable es que su identificador de dispositivo toma algún tiempo para registrarse con la antena del teléfono celular y eso es lo que está causando que el reinicio aparezca temporalmente para solucionar el problema.
Las listas negras de ubicación y las listas blancas se almacenan en los valores de Settings.Secure
, locationPackagePrefixBlacklist
y locationPackagePrefixWhitelist
, respectivamente. Estos valores contienen prefijos de nombre de paquete separados por comas. LocationBlacklist.isBlackListed()
comprueba primero la lista negra de una coincidencia y verifica la lista blanca de una excepción. LocationBlacklist
registra un ContentObserver
para que cualquier cambio en los valores de configuración se ContentObserver
afectado inmediatamente.
Desde Android 5.1, las listas son consultadas por getLastLocation()
y handleLocationChangedLocked()
de LocationManagerService
, así como updateFences()
de GeofenceManager
. Éstos simplemente devuelven null o salen en silencio si el prefijo de la aplicación o el nombre completo está en la lista negra. Todas las demás API de ubicación no se ven afectadas.
Dado que está observando un cambio de tiempo de ejecución en la lista negra, debe haber un proceso del sistema que agregue com.google
al valor Settings.Secure
algún momento después del inicio. Si no puede identificarlo, quizás cambiar manualmente el valor a través de la línea de comandos sqlite3 restauraría las actualizaciones de su aplicación. Podría ser cambiado de nuevo en algún momento, pero la identificación del culpable podría ser más fácil que tener que esperar a un reinicio cada vez. También puede intentar agregar com.google.android.apps.maps
a las excepciones de lista blanca.
En cuanto a la causa raíz de su problema, mi suposición salvaje es que la lista negra se está haciendo por alguna parte de Gapps en su dispositivo. Tal vez piensa que se está ejecutando dentro de un emulador o VM? ¿Está ejecutando una ROM personalizada?
- Cómo actualizar la interfaz de usuario desde el servicio de Android utilizando RxJava / RxAndroid
- Retos en RecyclerView de Android L