J'ai un Moto G6 Play qui vibre comme s'il recevait des notifications mais ce n'est pas le cas. La vibration est incohérente et semble aléatoire, donc je voudrais savoir s'il y a un logcat ou quelque chose que je peux exécuter pour enregistrer quelle application appelle la vibration afin que je puisse l'arrêter ? La même chose se produit sur le téléphone de ma femme, même modèle, et ça me fait mal à la tête. L'appareil fonctionne sous Android 9.
Réponses
Trop de publicités?En plus de la dumpsys
expliquée dans le autre réponse vous pouvez utiliser le gestionnaire de permissions caché (ou presque) d'Android. appops
pour obtenir les demandes de vibrateurs récemment autorisées, par exemple à la dernière minute. De 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
est le gestionnaire de paquets qui liste tous les paquets installés. appops
détermine la dernière fois que chaque paquet a fait une demande de vibration et si elle a été autorisée ou rejetée.
Le résultat peut être encore filtré en faisant passer la sortie par la tuyauterie. awk '{printf "%-12s%-20s%s\n",$3,$4,$1}'
:
allow; time=+15s659ms com.termux
allow; time=+6s458ms com.google.android.inputmethod.latin
Termux a fait une vibration 15 secondes en arrière. La demande peut aussi être refusée :
~$ appops set com.termux VIBRATE deny
Maintenant la sortie sera comme ceci :
deny; time=+9s500ms com.termux
allow; time=+6s392ms com.google.android.inputmethod.latin
Et une auto-promotion sans vergogne. Si vous n'êtes pas à l'aise avec le CLI, vous pouvez utiliser mon application open-source Gestionnaire de permissions X pour obtenir et régler les AppOps :
La prochaine fois que votre appareil vibrera, connectez-le à un PC avec la fonction adb déjà configuré, et lancez cette commande :
adb shell dumpsys vibrator
Dans le résultat, avec le modèle de vibration, vous serez en mesure de voir l'UID et le nom du paquet de l'application qui a causé la vibration dans l'appareil récemment. Par exemple, dans mon appareil OnePlus 6 (Android 8.1.0), le résultat est le suivant :
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 chaîne de caractères à côté de opPkg:
est le nom du paquet de l'application qui a provoqué la vibration à un moment donné. La liste est classée par ordre chronologique, l'entrée la plus récente se trouvant en bas. Pour obtenir le nom de l'application à partir du nom du paquet, consultez ma réponse. ici .