2012-08-29 31 views
6

¿El LocationManager de Android a veces usa varios megabytes de datos de Internet al obtener correcciones de posición? Y si es así, ¿en qué circunstancias? ¿Puede suceder incluso cuando la aplicación que utiliza el LocationManager no tiene permiso explícito para acceder a Internet?Uso de datos de Internet por el LocationManager de Android

Pregunto esto porque recientemente he notado que los datos de Internet utilizados por "Android OS" (como se informa en la pantalla Configuración -> "Uso de datos" en mi Samsung Galaxy Note con Android 4.0.4) son a veces 10 megabytes mas por dia La experimentación sugiere que este uso de datos solo se produce cuando ejecuto una aplicación que he escrito y que utiliza los datos de posición GPS proporcionados por el Administrador de ubicaciones. Cuando esta aplicación no se ejecuta, el "Sistema operativo Android" solo usa algunos kilobytes de datos por día.

Los únicos permisos en el manifiesto de la aplicación son "android.permission.ACCESS_FINE_LOCATION" y "android.permission.WRITE_EXTERNAL_STORAGE". No hay permiso para el acceso a internet. método

de la actividad onStart() contiene el código:

  if (!mapview .ignoreGPS) { 
      lm.requestLocationUpdates(LocationManager. GPS_PROVIDER , gpsMinTime , gpsMinDistance , this); 
    }  

código similar se llama cuando la bandera ignoreGPS está desactivado.

Existe también un método gotoLastLocation() que contiene el código:

  Location l = lm.getLastKnownLocation(LocationManager. GPS_PROVIDER); 

      if (l == null) { 
       l = lm .getLastKnownLocation(LocationManager. NETWORK_PROVIDER); 
      } 

Este método sólo se llama en raras ocasiones, cuando la bandera ignoreGPS está desactivado o cuando el usuario selecciona una opción de menú para ir a la última ubicación conocida.

Aparte de este método raramente llamado, no hay referencia a "NETWORK_PROVIDER".

¿GPS_PROVIDER usa "GPS asistido" de forma predeterminada? Si es así, ¿podría esto utilizar varios megabytes de datos? Incluso si no hay permiso de internet?

Si GPS_PROVIDER no puede obtener una solución de las señales del GPS, ¿utiliza LocationManager de forma predeterminada la red del teléfono celular? Incluso si la aplicación no tiene permiso de red? ¿Esto sería contado por el proveedor del teléfono como acceso a datos de Internet?

+0

[Este] (http://developer.android.com/training/efficient-downloads/ index.html) puede ser relevante para sus intereses. – Josh

+0

Gracias, Josh, por la sugerencia pero no puedo ver nada allí que me ayude. ¿Me estoy perdiendo de algo? Mi aplicación no tiene permiso para acceder a Internet y no solicita descargas explícitas; sin embargo, parece consumir varios megabytes de datos ... Supongo que esto debe ser mediante el uso de GPS asistido. Mi problema es cómo prevenir o limitar esto. – prepbgg

Respuesta

1

Nunca, el protocolo SUPL que descarga datos de asistencia solo utiliza unos pocos kilobytes de datos. Incluso si lo ejecuta mucho durante el día, no será mucho más que decir el uso del navegador.

Google a veces carga datos WiFi y el uso de la aplicación (espeluznante), cuando se usa el NETWORK_PROVIDER. Pero incluso eso no es mucho.

¿Puedes intentar eliminar todos los procesos en segundo plano o desinstalar mejor las aplicaciones no deseadas?

Mi mejor conjetura es que usted podría estar utilizando un MapView que descarga azulejos Mapa e imágenes por satélite - estos datos es pesado

+0

Perdón por responder despacio. He estado fuera. Re SUPL: mi aplicación solicita actualizaciones de ubicación cada 2 segundos (para garantizar una visualización sin problemas en un mapa), de modo que el acceso a Internet puede ser de 60 x 30 x "algunos kilobytes" por hora si se utiliza el protocolo SUPL para cada solicitud. ¿Podría ser esta la respuesta? ¿Se usa SUPL incluso si no hay permiso para acceder a internet? Procesos de fondo: ¿qué tipo de proceso accedería a internet solo cuando se ejecuta mi aplicación? Re map tiles: mi aplicación solo usa mosaicos de mapas almacenados en el dispositivo. – prepbgg

Cuestiones relacionadas