Mappage des constantes entre HAL et l'API

Cette page présente les mappages recommandés entre les constantes HAL publiques et les constantes de l'API. Si le matériel évalué n'implémente pas les constantes HAL, mettez à jour les modèles de secours décrits sur la page Implémenter des constantes et des primitives pour générer des sorties similaires. Le mappage est assisté par deux modèles par défaut différents :

  • Modèle discret (simple)

    • L'amplitude est la variable clé de ce modèle. Chaque entité du HAL représente une amplitude haptique différente.
    • Ce modèle est une exigence minimale pour implémenter l'UX haptique de base.
    • Une UX haptique plus avancée nécessite un matériel et un modèle (modèle continu) avancés.
  • Modèle continu (avancé)

    • La texture et l'amplitude sont les variables clés de ce modèle. Chaque entité du HAL représente une texture haptique différente. L'amplitude de chaque entité HAL est contrôlée par le facteur d'échelle (S).
    • Ce modèle nécessite du matériel avancé. Si les OEM souhaitent utiliser une UX haptique avancée avec VibrationEffect.Composition (pour une utilisation optimale des dernières API haptiques), il est recommandé d'implémenter leur matériel à l'aide de ce modèle.

Modèle discret

Il est recommandé de mapper toutes les constantes publiques fournies dans l'API avec les constantes HAL appropriées. Pour commencer ce processus, déterminez le nombre de formes d'onde haptiques avec une amplitude discrète que l'appareil peut définir dans la HAL. Une question spécifique structurée autour de cette notion se présente comme suit : Combien d'effets haptiques à impulsion unique avec des différences d'amplitude perceptibles par l'homme peuvent être définis sur mon téléphone ? La réponse à cette question détermine le mappage.

La définition des constantes HAL est un processus dépendant du matériel. Par exemple, un téléphone d'entrée de gamme peut ne disposer que des capacités matérielles nécessaires pour produire une seule forme d'onde haptique. Les appareils dotés de composants matériels plus avancés produisent une gamme plus large de niveaux d'amplitude discrets et peuvent définir plusieurs formes d'onde haptiques dans la HAL. Le mappage constant HAL-API prend la constante HAL (en utilisant l'amplitude moyenne comme référence), puis organise les effets plus ou moins forts à partir de là.

Diagramme de la plage constante et des amplitudes de rétroaction de HAL

Figure 14. Plage constante HAL par amplitude

Une fois le nombre de constantes HAL avec amplitude discrète défini, il est temps de mapper les constantes HAL et API par le nombre de constantes HAL. Ce processus de mappage peut segmenter une seule constante API d'impulsion en trois groupes distincts de niveaux d'amplitude au maximum. La façon dont les constantes d'API sont segmentées est basée sur les principes d'expérience utilisateur pour les événements d'entrée associés. Pour en savoir plus, consultez Conception UX des retours haptiques.

Modèle discret pour le mappage constant HAL-API

Figure 15. Mappage constant HAL-API : modèle discret

Si votre appareil n'est compatible qu'avec deux constantes HAL avec des amplitudes discrètes, envisagez de fusionner les constantes HAL de niveau d'amplitude "Moyen" et "Élevé". Par exemple, vous pouvez mapper EFFECT_CLICK et EFFECT_HEAVY_CLICK à la même constante HAL, qui serait la constante HAL de niveau d'amplitude moyen. Si votre appareil n'est compatible qu'avec une seule constante HAL avec une amplitude discrète, envisagez de fusionner les trois niveaux en un seul.

Modèle continu

Le modèle continu avec évolutivité de l'amplitude peut être appliqué pour définir des constantes HAL. Un facteur d'échelle (S) peut être appliqué aux constantes HAL (par exemple, HAL_H0, HAL_H1) pour produire le HAL mis à l'échelle (HAL_H0 x S). Dans ce cas, le HAL mis à l'échelle est mappé pour définir les constantes de l'API (HAL_H0 x S1 = H0S1 = EFFECT_TICK), comme illustré sur la figure 16. En utilisant l'évolutivité de l'amplitude du modèle continu, un appareil peut stocker un petit nombre de constantes HAL avec des textures distinctes et ajouter des variations d'amplitude en ajustant le facteur d'échelle (S). Les fabricants d'appareils peuvent définir le nombre de constantes HAL en fonction du nombre de textures haptiques différentes qu'ils souhaitent fournir.

Plage constante HAL par texture et amplitude

Figure 16. Plage constante HAL par texture (HAL_H0) et échelle d'amplitude (S)

Modèle continu pour le mappage constant HAL-API

Figure 17. Mappage constant HAL-API : modèle continu

Dans le modèle continu, différentes constantes HAL représentent différentes textures haptiques plutôt que différentes amplitudes. Le facteur d'échelle (S) peut configurer l'amplitude. Toutefois, comme la perception de la texture (par exemple, la netteté) est liée à la perception de la durée et de l'amplitude, il est recommandé de combiner la texture et le facteur d'échelle (dans le processus de conception du mappage HAL-API).

La figure 18 illustre le mappage constant en augmentant la variation d'une constante HAL à plusieurs constantes d'API avec une évolutivité de l'amplitude.

Augmenter la variation
1

Augmentation de la variation 2

Figure 18. Augmenter la variation avec l'évolutivité de l'amplitude

Pour toutes les constantes d'API évolutives telles que PRIMITIVE_TICK et PRIMITIVE_CLICK dans VibrationEffect.Composition, le niveau d'énergie de la constante d'API dépend du paramètre float scale lorsque la constante d'API est déclarée via addPrimitive(int primitiveID, float scale, int delay). PRIMITIVE_TICK et PRIMITIVE_CLICK peuvent être conçus avec une distinction claire en utilisant différentes constantes HAL. Cette approche est recommandée si vous souhaitez ajouter une variante à texture.