4 votes

Affiner/calibrer la détection globale du tapotement par rapport au balayage

J'ai dû remplacer l'écran et l'assemblage tactile sur un appareil que je possède, mais maintenant le nouveau matériel est trop bruyant : la plupart de mes tapes sont reconnus comme des balayages ou des lancers, ce qui rend l'expérience très frustrante.

Que peut-on faire pour résoudre ce problème? Une solution idéale consisterait à ajuster la logique de détection des gestes pour être moins restrictive sur ce qui est considéré comme un tapotement, interprétant les balayages rapides de courte distance comme des tapotements à la place.

Toute solution impliquant le root, xposed ou la recompilation du système d'exploitation avec des ajustements suggérés est la bienvenue. L'appareil en question exécute LineageOS 15.1, basé sur Oreo.

2voto

ptdropper Points 221

According to la documentation des développeurs Android:

Parce que le toucher basé sur les doigts n'est pas toujours la forme la plus précise d'interaction, la détection des événements tactiles est souvent basée davantage sur le mouvement que sur un simple contact. Pour aider les applications à distinguer les gestes basés sur le mouvement (comme un glissement) des gestes non basés sur le mouvement (comme un simple appui), Android inclut la notion de tolérance au toucher. La tolérance au toucher fait référence à la distance en pixels que le toucher d'un utilisateur peut parcourir avant que le geste ne soit interprété comme un geste basé sur le mouvement.

Dans le code source de l'AOSP, la valeur de la tolérance au toucher est obtenue avec l'une des deux fonctions sur frameworks/base/core/java/android/view/ViewConfiguration.java:

/**
 * @return Distance en dips qu'un toucher peut parcourir avant que nous pensons que l'utilisateur fait défiler
 *
 * @deprecated Utilisez plutôt {@link #getScaledTouchSlop()}.
 */
@Deprecated
public static int getTouchSlop() {
    return TOUCH_SLOP;
}

/**
 * @return Distance en pixels qu'un toucher peut parcourir avant que nous pensons que l'utilisateur fait défiler
 */
public int getScaledTouchSlop() {
    return mTouchSlop;
}

Je n'ai vu aucun appareil Android ou ROM qui offre un moyen de changer cette valeur via les paramètres du système ou similaire, mais des façons possibles de la modifier vous-même sont les suivantes:

  1. Changer les entrées config.xml, soit par un mécanisme d'overlay soit en créant votre propre ROM personnalisée,
  2. Accrocher les fonctions getTouchSlop et getScaledTouchSlop pour leur faire retourner une valeur différente, par exemple avec Xposed ou l'un de ses forks.

0voto

Arctiic Points 360

Il existe de nombreuses applications disponibles sur le Play Store qui ciblent ce problème spécifique, et beaucoup d'entre elles ne nécessitent même pas l'accès root. Le terme de recherche que je vous recommanderais d'utiliser serait "calibration de l'écran" ou similaire; en raison de leur grand nombre, je ne vais pas en suggérer en particulier, mais j'en ai essayé plusieurs au fil des ans (en faisant preuve de bon sens, par exemple, en consultant les avis avant de les télécharger) et elles semblent parfaitement faire l'affaire. Certaines sont destinées aux techniciens en réparation mobile et comportent divers utilitaires et fonctions de test (comme pour d'autres capteurs et fonctions d'écran), je trouve que celles-ci sont plus "fiables" car les consommateurs ciblés peuvent laisser des avis plus compétents et détaillés.

Édition : @And0réCarini Je sais que certaines d'entre elles fonctionnent, généralement celles qui vous font taper sur une cible dans quatre quadrants de l'écran et qui ne nécessitent généralement pas de root. Cependant, veuillez noter que 1) en fonction de la cause, la sensibilité pourrait ne pas être le problème ou ce qui doit être ajusté, et 2) en fonction du modèle de votre appareil, d'autres variables pourraient être en jeu (par exemple, les appareils Samsung Note ont deux digitizers distincts, un pour le stylet et un pour les touches des doigts).

Il pourrait être utile d'activer d'abord le mode développeur et d'activer l'option afficher les touches de l'écran pour voir s'il y a des indices visuels sur ce qui se passe. Vous pouvez également accéder au mode diagnostique de votre appareil (alias, menu de test [avancé], exemple) pour voir si le test de toucher peut aider à identifier d'autres détails. Et, si par hasard cela est dû à un digitaliseur défectueux/endommagé, en tant que mesure temporaire il existe des applications disponibles qui vous permettent de définir des zones de frontières personnalisées sur votre écran qui bloqueront les entrées tactiles, ce qui peut atténuer le comportement d'entrée non voulu (en supposant qu'il provient d'une zone localisée contenue).

Enfin, j'ai pu trouver ce post (nécessite le root) concernant une méthode potentielle pour ajuster la sensibilité tactile, mais veuillez noter que cela concerne spécifiquement le Pixel 2 XL donc les résultats peuvent varier.

D'autre part, il semble que la distance minimale pour activer les balayages soit déterminée par le code de l'application (voir ici et ici); comme la distance est prédéterminée, je pourrais déduire qu'une autre possibilité en dehors d'un problème de sensibilité pourrait être un problème de multi-touch causant l'enregistrement d'une fausse entrée de balayage; mes suggestions ci-dessus pourraient aider à confirmer ou éliminer cette possibilité.

0 votes

J'ai essayé quelques-unes et je n'ai remarqué aucune différence ; je ne sais pas non plus comment aucune de ces applications (en particulier celles qui ne nécessitent pas de root) pourrait ajuster le mécanisme de détection des gestes à l'échelle du système. J'ai tendance à penser qu'elles sont simplement des logiciels publicitaires.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X