Konstanten zwischen HAL und API abgleichen

Auf dieser Seite werden empfohlene Zuordnungen zwischen öffentlichen HAL-Konstanten und API-Konstanten vorgestellt. Wenn die bewertete Hardware die HAL-Konstanten nicht implementiert, aktualisieren Sie die auf der Seite Konstanten und Primitiven implementieren beschriebenen Fallbackmuster, um ähnliche Ausgaben zu generieren. Die Zuordnung wird durch zwei verschiedene Standardmodelle unterstützt:

  • Diskretes Modell (einfach)

    • Die Amplitude ist die Schlüsselvariable dieses Modells. Jede Einheit im HAL repräsentiert eine andere haptische Amplitude.
    • Dieses Modell ist eine Mindestanforderung für die Implementierung der grundlegenden haptischen Benutzeroberfläche.
    • Für eine erweiterte haptische Benutzeroberfläche sind erweiterte Hardware und ein erweitertes Modell (kontinuierliches Modell) erforderlich.
  • Kontinuierliches Modell (erweitert)

    • Die wichtigsten Variablen dieses Modells sind Textur und Amplitude. Jede Einheit im HAL steht für eine andere haptische Textur. Die Amplitude jeder HAL-Einheit wird durch den Skalierungsfaktor (S) gesteuert.
    • Für dieses Modell ist eine leistungsstarke Hardware erforderlich. Wenn OEMs erweiterte haptische UX mit VibrationEffect.Composition (für die optimale Nutzung der neuesten Haptik-APIs) verwenden möchten, wird empfohlen, ihre Hardware mit diesem Modell zu implementieren.

Diskretes Modell

Es wird empfohlen, alle öffentlichen Konstanten der API den entsprechenden HAL-Konstanten zuzuordnen. Um diesen Vorgang zu starten, müssen Sie herausfinden, wie viele haptische Wellenformen mit diskreter Amplitude das Gerät im HAL definieren kann. Eine konkrete Frage, die sich auf diesen Begriff bezieht, lautet: Wie viele einzelne haptische Impulse mit für den Menschen wahrnehmbaren Amplitudendifferenzen können auf meinem Smartphone definiert werden? Die Antwort auf diese Frage bestimmt das Mapping.

Das Definieren von HAL-Konstanten ist ein hardwareabhängiger Prozess. Ein Einsteiger-Smartphone hat beispielsweise möglicherweise nur die Hardware, um eine einzelne haptische Wellenform zu erzeugen. Geräte mit fortschrittlicheren Hardwarekomponenten erzeugen eine größere Bandbreite an diskreten Amplitudenpegeln und können mehrere haptische Wellenformen im HAL definieren. Bei der HAL-API-Konstanten-Zuordnung wird die HAL-Konstante (mit der mittleren Amplitude als Baseline) verwendet und dann stärkere oder schwächere Effekte angeordnet.

Diagramm des HAL-Konstantbereichs und der Feedbackamplituden

Abbildung 14. HAL-Konstantenbereich nach Amplitude

Wenn die Anzahl der HAL-Konstanten mit diskreter Amplitude definiert ist, ist es an der Zeit, HAL- und API-Konstanten nach der Anzahl der HAL-Konstanten zuzuordnen. Bei diesem Zuordnungsprozess kann eine einzelne API-Konstante für den Impuls in bis zu drei diskrete Gruppen von Amplitudenstufen unterteilt werden. Die Segmentierung von API-Konstanten basiert auf UX-Grundsätzen für begleitende Eingabeereignisse. Weitere Informationen finden Sie unter Haptics UX design.

Diskretes Modell für die HAL-API-Konstantenzuordnung

Abbildung 15. HAL-API-Konstantenzuordnung: Diskretes Modell

Wenn Ihr Gerät nur zwei HAL-Konstanten mit diskreten Amplituden unterstützt, sollten Sie die HAL-Konstanten für die Amplitudenstufen „Mittel“ und „Hoch“ zusammenführen. Ein praktisches Beispiel hierfür wäre die Zuordnung von EFFECT_CLICK und EFFECT_HEAVY_CLICK zur selben HAL-Konstante, nämlich der HAL-Konstante für die mittlere Amplitude. Wenn Ihr Gerät nur eine HAL-Konstante mit diskreter Amplitude unterstützt, sollten Sie alle drei Ebenen zusammenführen.

Kontinuierliches Modell

Das kontinuierliche Modell mit Amplitudenskalierbarkeit kann zum Definieren von HAL-Konstanten verwendet werden. Ein Skalierungsfaktor (S) kann auf die HAL-Konstanten (z. B. HAL_H0, HAL_H1) angewendet werden, um die skalierte HAL (HAL_H0 × S) zu erhalten. In diesem Fall wird die skalierte HAL zugeordnet, um API-Konstanten (HAL_H0 × S1 = H0S1 = EFFECT_TICK) zu definieren, wie in Abbildung 16 dargestellt. Durch die Verwendung der Amplitudenskalierbarkeit des kontinuierlichen Modells kann ein Gerät eine kleine Anzahl von HAL-Konstanten mit unterschiedlichen Texturen speichern und Amplitudenschwankungen hinzufügen, indem der Skalierungsfaktor (S) angepasst wird. Gerätehersteller können die Anzahl der HAL-Konstanten basierend darauf definieren, wie viele verschiedene haptische Texturen sie bereitstellen möchten.

HAL-Konstantenbereich nach Textur und Amplitude

Abbildung 16: HAL-Konstantenbereich nach Textur (HAL_H0) und Amplitudenskalierung (S)

Kontinuierliches Modell für die Zuordnung von HAL-API-Konstanten

Abbildung 17. HAL-API-Konstanten-Mapping: Kontinuierliches Modell

Im kontinuierlichen Modell stellen verschiedene HAL-Konstanten unterschiedliche haptische Texturen und nicht unterschiedliche Amplituden dar. Mit dem Skalierungsfaktor (S) kann die Amplitude konfiguriert werden. Da die Wahrnehmung der Textur (z. B. Schärfe) jedoch mit der Wahrnehmung der Dauer und Amplitude zusammenhängt, wird empfohlen, die Textur und den Skalierungsfaktor (im Designprozess der HAL-API-Zuordnung) zu kombinieren.

Abbildung 18 veranschaulicht die konstante Zuordnung durch Erhöhen der Variation von einer HAL- zu vielen API-Konstanten mit Amplitudenskalierbarkeit.

Steigende Variation
1

Zunehmende Variation
2

Abbildung 18. Variation durch Amplitudenskalierung erhöhen

Bei allen skalierbaren API-Konstanten wie PRIMITIVE_TICK und PRIMITIVE_CLICK in VibrationEffect.Composition hängt das Energieniveau der API-Konstante vom Parameter float scale ab, wenn die API-Konstante über addPrimitive(int primitiveID, float scale, int delay) deklariert wird. PRIMITIVE_TICK und PRIMITIVE_CLICK können durch die Verwendung verschiedener HAL-Konstanten klar voneinander abgegrenzt werden. Dieser Ansatz wird empfohlen, wenn Sie die Textur variieren möchten.