2 votos

¿Por qué mi móvil tratando de ocultar que el GPS está acostumbrando?

Me he dado cuenta de que mi teléfono ahora y, a continuación, deje de usar el GPS justo en el momento cuando enciendo la pantalla. Esto es notable porque no es el "va" de la animación de la notificación que le indica que el GPS está en uso. No veo ninguna razón por la que mi teléfono está tratando de localizar a sí mismo en un momento.

Al menos otro usuario ha informado este comportamiento, aquí en un comentario a Cómo comprobar que la aplicación utiliza el GPS en el Galaxy Nexus?:

[...] es sólo que cuando puedo desbloquear el teléfono puedo ver el icono de GPS en la barra de notificaciones para un split segundo, después desaparece. [...] – Dario Solera Jun 22 '12 a las 7:01

He continuación, utiliza logcat para guardar el registro en un archivo en el teléfono con el fin de examinar más tarde de lo que está pasando:

username@desktop:~$ adb shell
shell@jflte:/ $ logcat -r 1048576 -n 10 -f /mnt/extSdCard/logging/main.txt &

A las 01:52 al encender mi teléfono, he observado el mencionado comportamiento de nuevo (GPS notificación va a desaparecer en el momento en que enciendo mi pantalla del teléfono). He copiado más adelante main.txt a mi equipo de escritorio y filtrada con cat main.txt | grep -a -i location. El registro de la fecha en cuestión es el siguiente:

06-12 01:34:46.293 D/GpsLocationProvider(  908): receive broadcast intent, action: android.intent.action.SCREEN_OFF
06-12 01:38:36.815 W/ResourcesManager( 9551): Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
06-12 01:52:50.265 I/LocationManagerService(  908): remove 2bd78731 by com.google.android.gms
06-12 01:52:50.265 D/LocationManagerService(  908): provider request: passive ProviderRequest[ON interval=0]
06-12 01:52:50.265 D/LocationManagerService(  908): request 325c2a7a gps Request[ACCURACY_FINE gps requested=0 fastest=0] from com.google.android.gms(10055)
06-12 01:52:50.265 D/LocationManagerService(  908): provider request: gps ProviderRequest[ON interval=0]
06-12 01:52:50.275 D/GpsLocationProvider(  908): setRequest ProviderRequest[ON interval=0]
06-12 01:52:50.275 D/GpsLocationProvider(  908): startNavigating, singleShot is false
06-12 01:52:50.275 D/GpsLocationProvider_ex(  908): Data state true
06-12 01:52:50.275 D/GpsLocationProvider_ex(  908): getSKAFEnable : false
06-12 01:52:50.285 D/GpsLocationProvider(  908): setting position_mode to MS_BASED
06-12 01:52:50.505 E/LocSvc_ApiV02(  908): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 99 QMI_LOC_EVENT_LOCATION_SERVER_CONNECTION_REQ_IND_V02
06-12 01:52:50.505 V/GpsLocationProvider(  908): AGpsStatus is V2+: 96
06-12 01:52:50.505 V/GpsLocationProvider(  908): AGPS IP is v4: ffffffff
06-12 01:52:50.505 V/GpsLocationProvider(  908): Passing AGPS IP addr: size 0
06-12 01:52:50.505 D/GpsLocationProvider(  908): GPS_REQUEST_AGPS_DATA_CONN
06-12 01:52:50.505 V/GpsLocationProvider(  908): Received SUPL IP addr[]: null
06-12 01:52:50.545 D/GpsLocationProvider(  908): PhoneConstants.APN_ALREADY_ACTIVE
06-12 01:52:50.585 E/LocSvc_ApiV02(  908): I/<--- void globalRespCb(locClientHandleType, uint32_t, locClientRespIndUnionType, void*) line 125 QMI_LOC_INFORM_LOCATION_SERVER_CONN_STATUS_REQ_V02
06-12 01:52:50.905 V/GpsLocationProvider(  908): reportStatus status: 3
06-12 01:52:50.905 V/GpsLocationProvider(  908): reportStatus status: 1
06-12 01:52:50.905 D/GpsLocationProvider(  908): send an intent to notify GPS has been enabled or disabled mNavigating = true
06-12 01:52:51.055 D/GpsLocationProvider(  908): receive broadcast intent, action: android.net.conn.CONNECTIVITY_CHANGE
06-12 01:52:51.766 D/GpsLocationProvider(  908): receive broadcast intent, action: android.intent.action.SCREEN_ON
06-12 01:52:51.856 I/LocationManagerService(  908): remove 325c2a7a by com.google.android.gms
06-12 01:52:51.856 D/LocationManagerService(  908): provider request: gps ProviderRequest[OFF]
06-12 01:52:51.856 D/GpsLocationProvider(  908): setRequest ProviderRequest[OFF]
06-12 01:52:51.856 D/GpsLocationProvider(  908): stopNavigating
06-12 01:52:51.866 D/LocationManagerService(  908): request 3ec60783 passive Request[POWER_NONE passive fastest=0] from com.google.android.gms(10055)
06-12 01:52:51.866 D/LocationManagerService(  908): provider request: passive ProviderRequest[ON interval=0]
06-12 01:52:51.916 V/GpsLocationProvider(  908): reportStatus status: 2
06-12 01:52:51.916 D/GpsLocationProvider(  908): send an intent to notify GPS has been enabled or disabled mNavigating = false
06-12 01:52:51.916 V/GpsLocationProvider(  908): reportStatus status: 4
06-12 01:52:52.677 E/LocSvc_ApiV02(  908): I/<--- void globalEventCb(locClientHandleType, uint32_t, locClientEventIndUnionType, void*) line 99 QMI_LOC_EVENT_LOCATION_SERVER_CONNECTION_REQ_IND_V02
06-12 01:52:52.697 E/LocSvc_ApiV02(  908): I/<--- void globalRespCb(locClientHandleType, uint32_t, locClientRespIndUnionType, void*) line 125 QMI_LOC_INFORM_LOCATION_SERVER_CONN_STATUS_REQ_V02
06-12 01:52:52.697 V/GpsLocationProvider(  908): AGpsStatus is V2+: 96
06-12 01:52:52.697 V/GpsLocationProvider(  908): AGPS IP is v4: ffffffff
06-12 01:52:52.697 V/GpsLocationProvider(  908): Passing AGPS IP addr: size 0
06-12 01:52:52.697 D/GpsLocationProvider(  908): GPS_RELEASE_AGPS_DATA_CONN
06-12 01:52:53.398 D/GpsLocationProvider(  908): receive broadcast intent, action: android.net.conn.CONNECTIVITY_CHANGE
06-12 01:52:53.398 D/GpsLocationProvider(  908): receive broadcast intent, action: android.net.conn.CONNECTIVITY_CHANGE
06-12 01:52:54.098 D/LocationManagerService(  908): getLastLocation: Request[POWER_NONE passive fastest=0 num=1]
06-12 01:52:54.349 W/ResourcesManager(10089): Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
06-12 01:52:54.729 D/LocationManagerService(  908): getLastLocation: Request[POWER_NONE passive fastest=0 num=1]
06-12 01:52:54.859 D/LocationManagerService(  908): getLastLocation: Request[POWER_NONE passive fastest=0 num=1]
06-12 01:52:56.601 I/dex2oat (10211): /system/bin/dex2oat --runtime-arg -classpath --runtime-arg  --instruction-set=arm --instruction-set-features=div --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --dex-file=/data/data/com.google.android.gms/app_fb/f.apk --oat-fd=46 --art-fd=-1 --oat-location=/data/data/com.google.android.gms/app_fb/f.dex --runtime-arg -Xms64m --runtime-arg -Xmx512m
06-12 01:53:05.780 D/LocationProviderProxy(  908): applying state to connected service
06-12 01:53:05.800 D/LocationProviderProxy(  908): applying state to connected service
06-12 01:54:49.651 D/GpsLocationProvider(  908): receive broadcast intent, action: android.intent.action.SCREEN_OFF

Como se puede ver, el GPS pedido es cancelado 90ms después de la SCREEN_ON intención fue transmitido. Estoy seguro de que esta es una reacción directa a la emisión, porque he visto este comportamiento tantas veces ahora.

Hay una razón para ocultar el hecho de que el GPS está acostumbrando? Tal vez es mejor usar el GPS mientras la pantalla está apagada para bajar el pico de uso de la batería? Lo que en realidad es la activación de la GPS? Es com.google.android.gms la Aplicación de Google Maps? ¿Por qué iba a solicitar una actualización de la ubicación en 18 minutos después de que se me apague la pantalla?

2voto

Andy Brudtkuhl Puntos 1714

Varias características en Google Play Servicios de necesidad comprobar su ubicación en el fondo, tal vez, incluso cuando usted no está utilizando el teléfono de otra manera. Estas características incluyen geofences, que permiten a las aplicaciones a reaccionar en movimiento dentro o fuera de una región en particular (por ejemplo, cuando estás en casa); la Ubicación de la Historia si ha activado el Google Now "ubicación actual" clima informes y sugirió lugares cercanos; la actividad o aptitud de seguimiento; entre otros.

Sería muy malo para la vida de la batería si el teléfono que tenía para mantener a despertar a satisfacer estas peticiones. Cuando no esté utilizando el teléfono, normalmente va en una "baja potencia" del estado, donde no hay aplicaciones de ejecución (ni siquiera Google Play Services), el procesador principal es underclocked o apagado completamente, y radios (la célula de radio, la radio Wi-Fi, el Bluetooth, la radio y el GPS) también se puede apagar o poner en modo de suspensión. Saliendo de ese modo de suspensión de los costos de un poco de energía, por lo que Android intenta minimizar innecesarios wake-ups, para extender la vida útil de la batería.

Por esta razón, Android programador recurrentes de tareas en segundo plano muchas veces los retrasos de una tarea en segundo plano (como una actualización de la ubicación), mientras que el teléfono está dormido, o lotes de múltiples tareas en conjunto (tal como una actualización de la ubicación y una comprobación de nuevos mensajes de correo electrónico). Pero si el teléfono tiene que despertar de todos modos, porque se ha convertido en la pantalla, a continuación, las tareas que se retrasan ejecutar de inmediato.

Google Play Servicios de actualización de la ubicación sólo toma una fracción de segundo, especialmente si su ubicación no ha cambiado mucho, por lo que parece que está parada justo al encender la pantalla, cuando en realidad, toda la actualización se llevó menos tiempo del que se tomó para desbloquear el teléfono. Detener la petición no es "una reacción directa a la [SCREEN_ON] emisión": más bien, a partir de la solicitud es una reacción a traer el teléfono fuera del sueño.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X