10 votos

¿Cómo determinar qué aplicación está causando la vibración?

Tengo un Moto G6 Play que vibra como si recibiera notificaciones pero no es así. La vibración es inconsistente y parece aleatoria, así que me gustaría saber si hay un logcat o algo que pueda ejecutar para registrar qué aplicación está llamando a la vibración para poder apagarla. Lo mismo sucede en el teléfono de mi esposa, el mismo modelo, y me hace la cabeza. El dispositivo tiene Android 9.

7voto

Jack Wade Puntos 231

Además de la dumpsys método explicado en el otra respuesta Puedes utilizar el gestor de permisos oculto de Android appops para obtener solicitudes de vibradores recientemente permitidos, por ejemplo, en el último minuto. Desde adb shell :

for pkg in $(pm list packages | sed 's/package://')
do
    echo "$pkg $(appops get $pkg VIBRATE)" | grep 'time=+[0-9]*s'
done

pm es el gestor de paquetes que lista todos los paquetes instalados. appops determina cuándo fue la última vez que cada paquete hizo una solicitud de vibración y si fue permitida o rechazada.

El resultado puede filtrarse aún más pasando la salida por awk '{printf "%-12s%-20s%s\n",$3,$4,$1}' :

allow;      time=+15s659ms      com.termux
allow;      time=+6s458ms       com.google.android.inputmethod.latin

Termux hizo una vibración 15 segundos atrás. También la solicitud puede ser denegada:

~$ appops set com.termux VIBRATE deny

Ahora la salida será así:

deny;       time=+9s500ms       com.termux
allow;      time=+6s392ms       com.google.android.inputmethod.latin

Y una autopromoción descarada. Si no te sientes cómodo con CLI, puedes usar mi aplicación de código abierto Gestor de permisos X para obtener y establecer AppOps:

0 votos

Para aclarar, ¿necesitaré acceso Root para ejecutar ese comando o bastará con una instalación adb actualizada? Gracias de nuevo.

0 votos

@Badger todos los comandos funcionan sin Root en adb shell, pero no en una aplicación de emulador de terminal.

6voto

Firelord Puntos 161

La próxima vez que su dispositivo vibre, conéctelo a un PC con adb ya configurado, y emite este comando:

adb shell dumpsys vibrator

En la salida, junto con el patrón de vibración se podría ver el UID y el nombre del paquete de la app que causó la vibración en el dispositivo recientemente. Por ejemplo, en mi dispositivo OnePlus 6 (Android 8.1.0) mostraba esta salida:

Previous vibrations:
  , startTime: 95325556, effect: Waveform{mTimings=\[0, 250\], mAmplitudes=\[0, -1\], mRepeat=-1}, usageHint: 5, uid: 10122, opPkg: **com.textra**
  , startTime: 95346005, effect: Waveform{mTimings=\[0, 250\], mAmplitudes=\[0, -1\], mRepeat=-1}, usageHint: 5, uid: 10122, opPkg: com.textra
  , startTime: 95428005, effect: Waveform{mTimings=\[0, 250\], mAmplitudes=\[0, -1\], mRepeat=-1}, usageHint: 5, uid: 10122, opPkg: com.textra
  , startTime: 95516412, effect: OneShot{mTiming=50, mAmplitude=-1}, usageHint: 0, uid: 1001, opPkg: **com.android.incallui**
  , startTime: 95572994, effect: Waveform{mTimings=\[0, 250\], mAmplitudes=\[0, -1\], mRepeat=-1}, usageHint: 5, uid: 10122, opPkg: com.textra
  , startTime: 96868723, effect: Waveform{mTimings=\[0, 250\], mAmplitudes=\[0, -1\], mRepeat=-1}, usageHint: 0, uid: 1000, opPkg: **android**
  , startTime: 97144598, effect: OneShot{mTiming=200, mAmplitude=-1}, usageHint: 0, uid: 10130, opPkg: com.phonepe.app
  , startTime: 97187986, effect: OneShot{mTiming=200, mAmplitude=-1}, usageHint: 0, uid: 10130, opPkg: **com.phonepe.app**
  , startTime: 98229901, effect: Waveform{mTimings=\[0, 300\], mAmplitudes=\[0, -1\], mRepeat=-1}, usageHint: 0, uid: 10133, opPkg: **com.arlosoft.macrodroid**

La cadena junto a opPkg: es el nombre del paquete de la aplicación que causó la vibración en un momento determinado. La lista está en orden cronológico con la entrada más reciente en la parte inferior. Para obtener el nombre de la aplicación a partir del nombre del paquete, vea mi respuesta aquí .

1 votos

En Pie obtengo un tiempo legible para los humanos: startTime: Aug 10, 2019, 2:05:20 AM, effect: Prebaked{mEffectId=0, mEffectStrength=1, mFallback=true}, originalEffect: null, usageHint: 13, uid: 10151, opPkg: com.google.android.inputmethod.latin

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