4 votos

Ajustar/calibrar la detección de toque frente a deslizamiento en todo el sistema

He tenido que reemplazar la pantalla y el ensamblaje táctil en un dispositivo que tengo, pero ahora el nuevo hardware hace demasiado ruido: la mayoría de mis toques terminan siendo reconocidos como deslizamientos, lo que significa una experiencia muy frustrante.

¿Qué se puede hacer para solucionar esto? Una solución ideal sería ajustar la lógica de detección de gestos para que sea menos restrictiva en lo que se considera un toque, interpretando los deslizamientos rápidos a corta distancia como toques en su lugar.

Cualquier solución que involucre acceso root, xposed o recompilar el sistema operativo con ajustes sugeridos es bienvenida. El dispositivo en cuestión ejecuta LineageOS 15.1, basado en Oreo.

2voto

André Carini Puntos 3

Según la documentación para desarrolladores de Android:

Debido a que el toque basado en el dedo no siempre es la forma más precisa de interacción, la detección de eventos táctiles a menudo se basa más en el movimiento que en el simple contacto. Para ayudar a las aplicaciones a distinguir entre gestos basados en el movimiento (como deslizar) y gestos sin movimiento (como un toque simple), Android incluye la noción de margen de error en el toque. El margen de error en el toque se refiere a la distancia en píxeles que puede recorrer el toque de un usuario antes de que el gesto se interprete como un gesto basado en el movimiento.

En el código fuente de AOSP, el valor del margen de error en el toque se obtiene con una de las dos funciones en frameworks/base/core/java/android/view/ViewConfiguration.java:

/**
 * @return Distancia en dips que puede recorrer un toque antes de que pensemos que el usuario está desplazándose
 *
 * @deprecated Use {@link #getScaledTouchSlop()} instead.
 */
@Deprecated
public static int getTouchSlop() {
    return TOUCH_SLOP;
}

/**
 * @return Distancia en píxeles que puede recorrer un toque antes de que pensemos que el usuario está desplazándose
 */
public int getScaledTouchSlop() {
    return mTouchSlop;
}

No he visto ningún dispositivo Android o ROM que proporcione una forma de cambiar este valor a través de la configuración del sistema o similar, pero las formas posibles de cambiarlo tú mismo son:

  1. Cambiar las entradas de config.xml, ya sea a través de un mecanismo de superposición o creando tu propia ROM personalizada,
  2. Enganchar las funciones getTouchSlop y getScaledTouchSlop para que devuelvan un valor diferente, a través de por ejemplo Xposed o uno de sus bifurcaciones.

0voto

Arctiic Puntos 6

Existen muchas aplicaciones que se dirigen a este problema específico disponibles a través de la tienda Play, y muchas de ellas ni siquiera requieren acceso root. El término de búsqueda que te recomendaría que uses sería "calibración de pantalla" o similar; debido a la gran cantidad de ellas, no sugeriré ninguna en particular, pero he probado varias a lo largo de los años (mientras ejercía el sentido común, por ejemplo, revisando reseñas antes de descargarlas) y parecen cumplir perfectamente su función. Algunas están dirigidas a técnicos de reparaciones móviles y vienen con múltiples utilidades y funciones de prueba (como para otros sensores y funciones de pantalla), tiendo a encontrar estas más "confiables" en el sentido de que los consumidores a los que van dirigidas pueden dejar reseñas más competentes y detalladas.

Editar: @And0réCarini Sé que algunas de ellas funcionan, típicamente el tipo que te hace tocar un objetivo dentro de cuatro cuadrantes de la pantalla, y típicamente no requieren root. Sin embargo, ten en cuenta que 1) dependiendo de la causa, la sensibilidad podría no ser el problema o lo que necesita ser ajustado, y 2) dependiendo de tu modelo de dispositivo, puede haber otras variables en juego (por ejemplo, los dispositivos Samsung Note tienen dos digitalizadores separados, uno para el lápiz táctil y otro para toques con los dedos).

Puede beneficiarte primero activar el modo desarrollador y habilitar la opción de mostrar toques en pantalla para ver si hay pistas visuales sobre lo que está ocurriendo. También puedes acceder al modo de diagnóstico de tu dispositivo (también conocido como menú de pruebas [avanzado], ejemplo) para ver si la prueba de toque puede ayudar a identificar más detalles. Y, si por casualidad se debe a un digitalizador defectuoso / dañado, como medida temporal hay aplicaciones disponibles que te permiten personalizar áreas de límites en tu pantalla que bloquearán las entradas táctiles, lo que puede mitigar comportamientos de entradas no deseadas (asumiendo que provengan de un área localizada contenida).

Finalmente, pude encontrar este post (se requiere root) en relación a un método potencial para ajustar la sensibilidad del toque, pero ten en cuenta que esto es específico para el Pixel 2 XL por lo que puede variar en tu caso.

En una nota aparte, parece que la distancia mínima para activar deslizamientos está determinada por el código de la aplicación (ver aquí y aquí); dado que la distancia está predeterminada, inferiría que otra posibilidad además de un problema de sensibilidad podría ser un problema de multitouch que cause un deslizamiento falso para registrarse; mis sugerencias anteriores pueden ayudar a confirmar o eliminar esa posibilidad.

0 votos

He probado algunos y no he notado ninguna diferencia; tampoco sé cómo cualquiera de estas aplicaciones (especialmente las que no requieren acceso de superusuario) podrían ajustar el mecanismo de detección de gestos en todo el sistema. Me inclino a pensar que son simplemente adware.

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