Cette page présente les mappages recommandés entre les constantes publiques HAL et les constantes de l'API. Si le matériel évalué n'implémente pas les constantes HAL, mettez à jour les modèles de remplacement 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 requise pour implémenter l'expérience utilisateur haptique de base.
- Une expérience haptique plus avancée nécessite du matériel et un modèle avancés (modèle continu).
Modèle continu (avancé)
- La texture et l'amplitude sont les variables clés de ce modèle. Chaque entité du HAL représente différentes textures haptiques. 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 expérience 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.
- La texture et l'amplitude sont les variables clés de ce modèle. Chaque entité du HAL représente différentes textures haptiques. L'amplitude de chaque entité HAL est contrôlée par le facteur d'échelle (
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 haptique à amplitude discrète que l'appareil peut définir dans le 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 ne peut disposer que des fonctionnalités matérielles permettant de produire une seule forme d'onde haptique. Les appareils dotés de composants matériels plus avancés produisent une plage plus large de niveaux d'amplitude discrets et peuvent définir plusieurs formes d'ondes haptiques dans le HAL. La mise en correspondance des constantes HAL-API prend la constante HAL (en utilisant l'amplitude moyenne comme référence), puis organise les effets plus forts ou plus faibles à partir de là.
Figure 14. Plage de constantes HAL par amplitude
Lorsque le nombre de constantes HAL avec amplitude discrète est défini, il est temps de mapper les constantes HAL et API en fonction du nombre de constantes HAL. Ce processus de mappage peut segmenter une seule constante d'API d'impulsion en trois groupes distincts de niveaux d'amplitude. La segmentation des constantes de l'API est basée sur les principes d'expérience utilisateur pour les événements d'entrée associés. Pour en savoir plus, consultez la section Conception UX haptique.
Figure 15. Mappage des constantes 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é. Un exemple de cette notion en pratique consiste à mapper EFFECT_CLICK
et EFFECT_HEAVY_CLICK
sur la même constante HAL, qui serait la constante HAL de niveau d'amplitude moyen. Si votre appareil n'est compatible qu'avec une constante HAL avec une amplitude discrète, envisagez de fusionner les trois niveaux en un.
Modèle continu
Le modèle continu avec évolutivité de l'amplitude peut être appliqué pour définir des constantes HAL. Un facteur de mise à l'échelle (S
) peut être appliqué aux constantes HAL (par exemple, HAL_H0
, HAL_H1
) pour générer la HAL mise à l'échelle (HAL_H0
x S
). Dans ce cas, la HAL mise à l'échelle est mappée pour définir les constantes d'API (HAL_H0
x S1
= H0S1
= EFFECT_TICK
), comme illustré à la figure 16. En utilisant la scalabilité de l'amplitude du modèle continu, un appareil peut stocker un petit nombre de constantes HAL avec des textures distinctives et ajouter des variations d'amplitude en ajustant le facteur de mise à l'é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.
Figure 16. Plage de constantes HAL par texture (HAL_H0) et échelle d'amplitude (S)
Figure 17. Mappage des constantes 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 de mise à l'é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 de mise à l'échelle (dans le processus de conception de la mise en correspondance HAL-API).
La figure 18 illustre le mappage de constantes en augmentant la variation d'un HAL à de nombreuses constantes d'API avec une évolutivité d'amplitude.
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 à l'aide de constantes HAL différentes. Cette approche est recommandée si vous souhaitez ajouter de la variation à la texture.