Cómo implementar tecnología háptica

Por lo general, los fabricantes de dispositivos se consideran los propietarios de los recursos privados que se crean para cada dispositivo. Por lo tanto, sus esfuerzos de ingeniería suelen enfocarse en una base por dispositivo; se dedica poco o ningún esfuerzo a la coherencia de otros dispositivos en el ecosistema.

En cambio, los desarrolladores se esfuerzan por compilar apps que funcionen en todos los teléfonos Android del ecosistema, independientemente de las especificaciones técnicas de cada dispositivo. Esta diferencia de enfoque puede causar un problema de fragmentación, por ejemplo, las capacidades de hardware de ciertos teléfonos no coinciden con las expectativas establecidas por los desarrolladores de apps. Por lo tanto, si las APIs de tecnología táctil funcionan en algunos teléfonos Android, pero no en otros, el resultado será un ecosistema incoherente. Por eso, la configuración de hardware desempeña un papel fundamental para garantizar que los fabricantes puedan implementar las APIs de tecnología táctil de Android en todos los dispositivos.

En esta página, se proporciona una lista de tareas paso a paso para configurar el cumplimiento del hardware y aprovechar al máximo las APIs de tecnología táctil de Android.

En la siguiente imagen, se ilustra la creación de un conocimiento común entre los desarrolladores y los fabricantes de dispositivos, que es un paso fundamental para crear un ecosistema cohesivo.

Diagrama de casos de uso de la tecnología táctil para desarrolladores de apps y fabricantes de dispositivos

Figura 1: Generación de conocimiento entre fabricantes y desarrolladores de dispositivos

Lista de tareas para la implementación de la tecnología táctil

  1. Implementa constantes

    • Es una lista de constantes para implementar la tecnología táctil.
  2. Asigna constantes entre HAL y la API

    • Recomendaciones de asignación entre constantes de la API pública (denominadas marcadores de posición en el framework) y constantes de HAL, que implementan los marcadores de posición.
    • Consulta Principios de diseño para guiar la asignación recomendada si quieres obtener más información sobre este proceso.
  3. Evalúa el hardware

    • Instrucciones sobre los efectos táctiles de destino Usa estas instrucciones para realizar verificaciones rápidas en el hardware.

A continuación, exploraremos cada uno de estos pasos con más detalle.

Paso 1: Implementa constantes

Realiza estas verificaciones para determinar si tu dispositivo cumple con los requisitos mínimos para implementar la tecnología táctil.

Diagrama de flujo del proceso de implementación de la tecnología táctil

Figura 2: Implementa efectos

Diagrama de flujo de pasos para implementar primitivas

Figura 3: Implementa primitivas

Verifica el estado de implementación de las siguientes constantes táctiles.

Constantes táctiles Ubicaciones y resúmenes
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK Clase VibrationEffect
Las constantes táctiles en VibrationEffect no incluyen ninguna noción de eventos de entrada ni tienen elementos de IU. En cambio, las constantes incluyen la noción de niveles de energía, como EFFECT_CLICK y EFFECT_HEAVY_CLICK, a los que llama createPredefined().
PRIMITIVE_TICK, PRIMITIVE_CLICK, PRIMITIVE_LOW_TICK>, PRIMITIVE_SLOW_RISE, PRIMITIVE_QUICK_RISE, PRIMITIVE_QUICK_FALL, PRIMITIVE_SPIN, PRIMITIVE_THUD Clase VibrationEffect.Composition
Las constantes táctiles en VibrationEffect.Composition pueden tener una intensidad escalable, a la que llama addPrimitive(int primitiveId, float scale, int delay).

Las vibraciones alternativas que se describen a continuación se realizan en dispositivos que no implementan las constantes VibrationEffect. Se recomienda actualizar estos parámetros de configuración para obtener el mejor rendimiento en esos dispositivos.

  1. EFFECT_CLICK

    Vibración de la forma de onda creada con VibrationEffect.createWaveform y los tiempos configurados en frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.

  2. EFFECT_HEAVY_CLICK

    Vibración de la forma de onda creada con VibrationEffect.createWaveform y los tiempos configurados en frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern

  3. EFFECT_DOUBLE_CLICK

    Vibración de forma de onda creada con VibrationEffect.createWaveform y los tiempos (0, 30, 100, 30).

  4. EFFECT_TICK

    Vibración de la forma de onda creada con VibrationEffect.createWaveform y los tiempos configurados en frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern

Diagrama de flujo de pasos para probar la respuesta táctil

Figura 4: Cómo implementar constantes de comentarios

Verifica el estado de las siguientes constantes de comentarios públicos.

Constantes táctiles Ubicaciones y resúmenes
CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, GESTURE_START, GESTURE_END Clase HapticFeedbackConstants
Las constantes táctiles en eventos de entrada de asistencia HapticFeedbackConstants con ciertos elementos de la IU, como KEYBOARD_PRESS y KEYBOARD_RELEASE, a los que llama performHapticFeedback().

Paso 2: Asigna constantes entre la HAL y la API

En el paso 2, se presentan las asignaciones recomendadas entre las constantes de HAL públicas y las constantes de API. Si el hardware evaluado en el paso 1 no implementa las constantes de HAL, se debe usar el paso 2 para actualizar los patrones de resguardo descritos en el paso 1 y generar resultados similares. La asignación es asistida por dos modelos predeterminados diferentes.

  • Modelo discreto (simple)

    • La amplitud es la variable clave de este modelo. Cada entidad en el HAL representa una amplitud táctil diferente.
    • Este modelo es un requisito mínimo necesario para implementar la UX táctil básica.
    • Una UX táctil más avanzada requiere hardware avanzado y un modelo avanzado (modelo continuo).
  • Modelo continuo (avanzado)

    • La textura y la amplitud son las variables clave de este modelo. Cada entidad del HAL representa diferentes texturas táctiles. El factor de escala (S) controla la amplitud de cada entidad de HAL.
    • Este modelo requiere hardware avanzado. Si los OEMs quieren usar una UX táctil avanzada con VibrationEffect.Composition (para aprovechar al máximo las APIs de tecnología táctil más recientes), se recomienda implementar su hardware con este modelo.

Modelo discreto

Se recomienda asignar todas las constantes públicas proporcionadas en la API con las constantes de HAL adecuadas. Para comenzar este proceso, averigua cuántas formas de onda táctiles con amplitud discreta puede definir el dispositivo en el HAL. Una pregunta específica que se estructura en torno a esa noción se ve de la siguiente manera: ¿Cuántos efectos táctiles de un solo impulso con diferencias de amplitud perceptibles por el ser humano se pueden definir en mi teléfono? La respuesta a esta pregunta determina la asignación.

La definición de constantes de HAL es un proceso que depende del hardware. Por ejemplo, un teléfono de entrada podría tener solo las capacidades de hardware para producir una sola forma de onda táctil. Los dispositivos con componentes de hardware más avanzados producen un rango más amplio de niveles de amplitud discretos y pueden definir varias formas de onda táctiles en el HAL. La asignación de constantes de la API de HAL toma la constante de HAL (con la amplitud media como referencia) y, luego, organiza los efectos más fuertes o más débiles a partir de allí.

Diagrama del rango constante de HAL y las amplitudes de retroalimentación

Figura 5: Rango constante de HAL por amplitud

Cuando se define la cantidad de constantes de HAL con amplitud discreta, es hora de asignar las constantes de HAL y de la API según la cantidad de constantes de HAL. Este proceso de asignación puede segmentar una sola constante de API de impulso en hasta tres grupos discretos de niveles de amplitud. La forma en que se segmentan las constantes de API se basa en principios de UX para acompañar a los eventos de entrada. Para obtener más información, consulta Diseño de UX táctil.

Modelo discreto para la asignación de constantes de HAL-API

Figura 6: Asignación de constantes de HAL a la API: Modelo discreto

Si tu dispositivo solo admite dos constantes de HAL con amplitudes discretas, considera combinar las constantes de HAL de nivel de amplitud media y alta. Un ejemplo de esta noción en la práctica sería asignar EFFECT_CLICK y EFFECT_HEAVY_CLICK a la misma constante de HAL, que sería la constante de HAL de nivel de amplitud media. Si tu dispositivo solo admite una constante HAL con amplitud discreta, considera combinar los tres niveles en uno.

Modelo continuo

Se puede aplicar el modelo continuo con escalabilidad de amplitud para definir las constantes de HAL. Se puede aplicar un factor de escala (S) a las constantes de la HAL (por ejemplo, HAL_H0 y HAL_H1) para producir la HAL ajustada (HAL_H0 x S). En este caso, la HAL ajustada se asigna para definir constantes de API (HAL_H0 x S1 = H0S1 = EFFECT_TICK), como se muestra en la figura 7. Con el uso de la escalabilidad de amplitud del modelo continuo, un dispositivo puede almacenar una pequeña cantidad de constantes de HAL con texturas distintivas y agregar variaciones de amplitud ajustando el factor de escala (S). Los fabricantes de dispositivos pueden definir la cantidad de constantes de HAL según la cantidad de texturas táctiles diferentes que quieran proporcionar.

Rango constante de HAL por textura y amplitud

Figura 7: Rango constante de HAL por textura (HAL_H0) y escala de amplitud (S)

Modelo continuo para el mapeo de constantes de la API de HAL

Figura 8: Asignación de constantes de HAL a la API: Modelo continuo

En el modelo continuo, diferentes constantes de HAL representan diferentes texturas táctiles en lugar de diferentes amplitudes. El factor de escala (S) puede configurar la amplitud. Sin embargo, debido a que la percepción de la textura (por ejemplo, la nitidez) está relacionada con la percepción de la duración y la amplitud, se recomienda combinar la textura y el factor de escala (en el proceso de diseño de la asignación de la API de HAL).

En la Figura 7, se ilustra la asignación de constantes mediante el aumento de la variación de un HAL a muchas constantes de API con escalabilidad de amplitud.

Aumento de la variación 1

Aumento de la variante 2

Figura 9: Aumenta la variación con la escalabilidad de amplitud

Para todas las constantes de API escalables, como PRIMITIVE_TICK y PRIMITIVE_CLICK en VibrationEffect.Composition, el nivel de energía de la constante de la API depende del parámetro float scale cuando la constante de API se declara mediante addPrimitive(int primitiveID, float scale, int delay). PRIMITIVE_TICK y PRIMITIVE_CLICK se pueden diseñar con una distinción clara mediante el uso de diferentes constantes de HAL. Se recomienda este enfoque si deseas agregar variación a la textura.

Paso 3: Evalúa el hardware

La evaluación de hardware implica definir tres efectos táctiles, etiquetados como Efectos 1, 2 y 3 para esta evaluación específica.

Efecto 1: Constantes táctiles cortas predefinidas

La constante VibrationEffect.EFFECT_CLICK es el efecto del modelo de referencia o el denominador común en la asignación de HAL a la API que se proporciona en el paso 2. Se asigna con el efecto más usado, HapticFeedbackConstants.KEYBOARD_PRESS. La evaluación de este efecto ayuda a determinar la preparación de tu dispositivo de destino para la realidad táctil clara.

Efecto 2: Efecto táctil personalizado corto

La constante VibrationEffect.createOneShot(20,255) es para efectos táctiles personalizados. Para impulsos personalizados cortos y únicos, el umbral máximo recomendado para definir la duración es de 20 ms. No se recomienda un solo impulso de más de 20 ms porque se percibe como una vibración zumbante.

Forma de onda de un efecto táctil personalizado corto

Figura 10: Efecto táctil personalizado corto

Efecto 3: Efecto táctil personalizado largo con variación de amplitud

La constante VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) es para efectos personalizados largos con variación de amplitud. La capacidad de producir amplitudes variables para efectos táctiles personalizados es uno de los indicadores que permite evaluar las capacidades del dispositivo para la tecnología táctil enriquecida. Los timings [] y amplitudes [] recomendados son {500, 500} y {128, 255}, respectivamente, que presentan una tendencia creciente de amplitud del 50% al 100%, con una tasa de muestreo de 500 ms.

Forma de onda del efecto táctil con variación de amplitud

Figura 11: Efecto táctil personalizado largo con variación de amplitud

Para verificar las capacidades de hardware del control de amplitud del Efecto 3, usa el método Vibrator.hasAmplitudeControl(). El resultado debe ser true para ejecutar VibrationEffect.createWaveform con una amplitud variable según lo previsto.

Flujo de trabajo de la evaluación del efecto táctil subjetivo

Figura 12: Evaluación del sujeto sobre los efectos táctiles 1, 2 y 3

Realiza una evaluación subjetiva

Para realizar una verificación de coherencia rápida, primero realiza una evaluación subjetiva. El objetivo de la evaluación subjetiva es observar la amplitud de los efectos táctiles para determinar si el dispositivo puede generar tecnología táctil con amplitudes perceptibles a los seres humanos.

Una pregunta específica estructurada en torno a esta noción se ve de la siguiente manera: ¿Puede el dispositivo producir efectos táctiles perceptibles para los usuarios como se espera? Responder esta pregunta te ayuda a evitar errores táctiles, como la tecnología táctil imperceptible que los usuarios no pueden sentir o la tecnología táctil no deseada en la que las formas de onda no producen patrones como se espera.

Realiza una evaluación avanzada

Se recomienda realizar evaluaciones de calidad avanzadas. Las evaluaciones de calidad avanzadas caracterizan los atributos cuantificables de los efectos táctiles para implementar táctiles de calidad. Cuando termines, los fabricantes de dispositivos deberían poder diagnosticar el estado táctil actual, lo que significa que pueden establecer objetivos para mejorar la calidad general. Consulta Evaluación de hardware.