1 votos

Las coordenadas de la "localización de dumpsys" son censuradas en los dispositivos Huawei

Me gustaría leer las coordenadas de mi Huawei P30 Pro vía ADB llamando a adb shell dumpsys location . Sin embargo, la salida es como:

Last Known Locations:
   gps: Location[gps 11******,14****** ...

Se censuran con las estrellas aunque el GPS ya esté encendido.

¿Alguna idea?

1voto

Andrew T. Puntos 2107

Parece que esta es una modificación que los Huawei hicieron por sí mismos (no se han encontrado todavía razones de hecho). En resumen, el método para imprimir los detalles del lugar fue sobrescrito.

dumpsys El comando llama al método de volcado de los servicios del sistema (más detalles en esta respuesta en Stack Overflow ), y para dumpsys location el servicio respectivo es LocationManagerService .

El dump() método para LocationManagerService (en Android 10, pero tampoco hay grandes diferencias con las versiones anteriores) contiene un código como este:

...

pw.println("  Last Known Locations:");
for (Map.Entry<String, Location> entry : mLastLocation.entrySet()) {
    String provider = entry.getKey();
    Location location = entry.getValue();
    pw.println("    " + provider + ": " + location);
}

...

donde iterará las últimas ubicaciones conocidas de todos los proveedores de ubicación e imprimirá el nombre del proveedor y su ubicación. Tenga en cuenta que la ubicación es un ejemplo de Location objetos.

Por defecto, el método para imprimir el detalle de la Location objeto ( toString() ) contiene un código como este:

@Override
public String toString() {
    StringBuilder s = new StringBuilder();
    s.append("Location[");
    s.append(mProvider);
    s.append(String.format(" %.6f,%.6f", mLatitude, mLongitude));
    ...

donde imprimirá la latitud y la longitud en 6 dígitos decimales.

Para muchos dispositivos, este es el comportamiento estándar, como se muestra en Nexus 5 con LineageOS 14.1 (Android 7.1):

 Last Known Locations:
    ...
    fused: Location[fused 1.234567,101.010101 acc=500 et=+12h00m00s000ms]
    ...

Los números han sido cambiados por razones de privacidad

Anulando el método, los fabricantes de equipos originales pueden personalizar cómo dumpsys mostrará el contenido. (Nota: mientras que Android requiere que algunos servicios no sean modificados la ubicación no es una de ellas)

0 votos

Gracias por su útil explicación. Entonces, ¿hay algún comando adb independiente del dispositivo que pueda utilizar? En mi caso (python), sólo puedo trabajar con comandos adb...

0 votos

@mahack No he investigado más ni lo he probado, pero tal vez podrías instalar aplicaciones de terceros que puedan obtener las coordenadas GPS y enviarlas a logcat, y luego usar adb logcat en su lugar.

0 votos

Gracias por tu idea, lo guardaré para un plan B. El problema es que no tengo la posibilidad de instalar una app por no tener ese permiso. Pero tengo el problema con eso de toString(), podría llegar a ser un camino largo.

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