このページでは、公開 HAL 定数と API 定数の間の推奨されるマッピングを示します。評価したハードウェアが HAL 定数を実装していない場合は、定数とプリミティブを実装するページで説明されているフォールバック パターンを更新して、同様の出力を生成します。マッピングは、2 つの異なるデフォルト モデルによって支援されます。
非連続モデル(簡単)
- このモデルの主な変数は振幅です。HAL の各エンティティは異なる触覚振幅を表します。
- このモデルは、基本的な触覚 UX を実装するために必要な最小要件です。
- 高度な触覚 UX には、高度なハードウェアと高度なモデル(連続モデル)が必要です。
連続モデル(高度)
- このモデルの主な変数はテクスチャと振幅です。HAL の各エンティティは異なる触覚テクスチャを表します。各 HAL エンティティの振幅は、スケーリング ファクタ(
S
)によって制御されます。 - このモデルには高度なハードウェアが必要です。OEM が最新のハプティクス API を最大限活用するために、
VibrationEffect.Composition
で高度な触覚 UX を使用する場合は、このモデルを使用してハードウェアを実装することをおすすめします。
- このモデルの主な変数はテクスチャと振幅です。HAL の各エンティティは異なる触覚テクスチャを表します。各 HAL エンティティの振幅は、スケーリング ファクタ(
非連続モデル
API で提供されるすべてのパブリック定数を、適切な HAL 定数にマッピングすることをおすすめします。このプロセスを開始するには、デバイスが HAL で定義できる、非連続の振幅を持つ触覚波形の数を確認します。この概念に基づいた具体的な質問は次のようになります。「1 台のスマートフォンに、人間が知覚できる振幅差を持つシングル インパルス触覚衝撃をいくつ定義できますか?」この質問に対する回答によってマッピングが決まります。
HAL 定数の定義はハードウェアに依存するプロセスです。たとえば、エントリー レベルのスマートフォンには、単一の触覚波形を生成するハードウェア機能しかないことがあります。より高度なハードウェア コンポーネントを備えたデバイスでは、より広範囲な非連続の振幅レベルが生成され、HAL で複数の触覚波形を定義できます。HAL - API 定数マッピングでは、HAL 定数を(中程度の振幅をベースラインに)使用して、より強い、またはより弱い効果を合成します。
図 14. 振幅による HAL 定数の範囲
非連続の振幅を持つ HAL 定数の数を定義したら、HAL 定数と API 定数を HAL 定数の数でマッピングします。このマッピング プロセスでは、シングル インスパルス API 定数を、最大 3 つの振幅レベルの非連続なグループに分割できます。API 定数をセグメント化する方法は、付随する入力イベントの UX 原則に基づきます。詳しくは、ハプティクス UX デザインをご覧ください。
図 15. HAL - API 定数マッピング: 非連続モデル
デバイスが、非連続の振幅を持つ 2 つの HAL 定数のみをサポートしている場合は、中振幅レベルと高振幅レベルの HAL 定数を統合することを検討してください。この概念の実例としては、EFFECT_CLICK
と EFFECT_HEAVY_CLICK
を同じ HAL 定数(中振幅レベルの HAL 定数)にマッピングすることが挙げられます。デバイスが、非連続の振幅を持つ 1 つの HAL 定数のみをサポートしている場合は、3 つのレベルをすべて 1 つに統合することを検討してください。
連続モデル
振幅スケーラビリティがある連続モデルは、HAL 定数を定義するために適用できます。スケーリング ファクタ(S
)を HAL 定数(HAL_H0
、HAL_H1
など)に適用して、スケールされた HAL(HAL_H0
× S
)を生成できます。この場合、図 16 に示すように、スケールされた HAL は API 定数(HAL_H0
× S1
= H0S1
= EFFECT_TICK
)を定義するためにマッピングされます。連続モデルの振幅スケーラビリティを使用することで、デバイスは固有のテクスチャを持つ少数の HAL 定数を格納でき、スケーリング ファクタ(S
)を調整することで振幅の変動を追加できます。デバイス メーカーは、提供するさまざまな触覚テクスチャの数に基づいて HAL 定数の数を定義できます。
図 16. テクスチャ(HAL_H0)と振幅スケール(S)による HAL 定数の範囲
図 17. HAL - API 定数マッピング: 連続モデル
連続モデルでは、異なる HAL 定数は、異なる振幅ではなく、異なる触覚テクスチャを表します。スケーリング ファクタ(S
)で振幅を設定できます。ただし、テクスチャの認識(シャープネスなど)は持続と振幅の認識に関係するため、テクスチャとスケーリング ファクタを組み合わせることをおすすめします(HAL - API マッピングの設計プロセス)。
図 18 は、振幅スケーラビリティによって 1 つの HAL から多くの API 定数まで変動を増やす定数マッピングを示しています。
図 18. 振幅スケーラビリティによる変動の増加
スケーラブルな API 定数(VibrationEffect.Composition
の PRIMITIVE_TICK
や PRIMITIVE_CLICK
など)はすべて、API 定数が addPrimitive(int primitiveID, float scale,
int delay)
を通じて宣言されている場合、API 定数のエネルギー レベルが float scale
パラメータによって異なります。PRIMITIVE_TICK
と PRIMITIVE_CLICK
は、異なる HAL 定数を使用することで明確に区別して設計できます。テクスチャに変動を追加する場合は、この方法をおすすめします。