Asigna constantes entre HAL y la API

En esta página, se presentan las asignaciones recomendadas entre las constantes públicas de HAL y las constantes de la API. Si el hardware evaluado no implementa las constantes de HAL, entonces actualiza los patrones de resguardo que se describen en la página Implementa constantes y tipos primitivos para generar resultados similares. La asignación se realiza con la ayuda de dos modelos predeterminados diferentes:

  • Modelo discreto (simple)

    • La amplitud es la variable clave de este modelo. Cada entidad en HAL representa una amplitud háptica diferente.
    • Este modelo es un requisito mínimo necesario para implementar la UX háptica básica.
    • Una UX háptica 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 en HAL representa diferentes texturas hápticas. 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 háptica avanzada con VibrationEffect.Composition (para aprovechar al máximo las APIs de háptica más recientes), se recomienda implementar su hardware con este modelo.

Modelo discreto

Se recomienda asignar todas las constantes públicas que se proporcionan en la API con las constantes de HAL adecuadas. Para comenzar este proceso, averigua cuántas formas de onda hápticas con amplitud discreta puede definir el dispositivo en HAL. Una pregunta específica estructurada en torno a esa noción se ve de la siguiente manera: ¿Cuántos efectos hápticos de un solo impulso con diferencias de amplitud perceptibles para 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 dependiente del hardware. Por ejemplo, un teléfono de nivel de entrada podría tener solo las capacidades de hardware para producir una sola forma de onda háptica. Los dispositivos con componentes de hardware más avanzados producen una gama más amplia de niveles de amplitud discreta y pueden definir varias formas de onda hápticas en HAL. La asignación constante de HAL-API toma la constante de HAL (con la amplitud media como línea de base) y, luego, organiza los efectos más fuertes o más débiles a partir de ahí.

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

Figura 1: Rango constante de HAL por amplitud

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

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

Figura 2: Asignación constante de HAL-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 de 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 constantes de HAL. Se puede aplicar un factor de escala (S) a las constantes de HAL (por ejemplo, HAL_H0, HAL_H1) para producir el HAL escalado (HAL_H0 x S). En este caso, el HAL escalado se asigna para definir constantes de API (HAL_H0 x S1 = H0S1 = EFFECT_TICK), como se muestra en la figura 3. Si usas 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 en función de la cantidad de texturas hápticas diferentes que quieran proporcionar.

Rango constante del HAL por textura y amplitud

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

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

Figura 4: Asignación constante de HAL-API: Modelo continuo

En el modelo continuo, las diferentes constantes de HAL representan diferentes texturas hápticas 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 HAL-API).

En la figura 5, se ilustra la asignación constante mediante el aumento de la variación de una HAL a muchas constantes de API con escalabilidad de amplitud.

Aumento de la variación 1

Aumento de la variación 2

Figura 5: Aumento de 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 API depende del parámetro float scale cuando la constante de API se declara a través de 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.