Gerätehersteller gelten in der Regel als Inhaber der privaten Assets, die für jedes Gerät erstellt wurden. Daher konzentrieren sich ihre Entwicklungsbemühungen oft auf eine Gerätebasis. Die Konsistenz anderer Geräte im Ökosystem wird kaum oder gar nicht berücksichtigt.
Im Gegensatz dazu entwickeln Entwickler Apps, die auf allen Android-Smartphones funktionieren, unabhängig von den technischen Spezifikationen der einzelnen Geräte. Dieser Unterschied im Ansatz kann zu einer Fragmentierung führen, wenn die Hardwarefunktionen bestimmter Smartphones beispielsweise nicht den Erwartungen der App-Entwickler entsprechen. Wenn die Haptik-APIs also auf einigen Android-Smartphones funktionieren, aber auf anderen nicht, ist das Ergebnis ein inkonsistentes System. Daher spielt die Hardwarekonfiguration eine wichtige Rolle, damit Hersteller Android-Haptik-APIs auf allen Geräten implementieren können.
Auf dieser Seite finden Sie eine detaillierte Checkliste, mit der Sie die Hardwarekompatibilität für die optimale Nutzung der Android-Haptik-APIs einrichten können.
Die folgende Abbildung veranschaulicht den Aufbau von gemeinsamen Kenntnissen zwischen Geräteherstellern und Entwicklern, was ein wichtiger Schritt beim Erstellen eines zusammenhängenden Ökosystems ist:
Abbildung 1: Wissensaustausch zwischen Geräteherstellern und Entwicklern
Checkliste für die Implementierung von Haptik
-
- Liste der Konstanten zur Implementierung von Haptik.
-
- Implementierungsleitfaden für HAL-Kompositionsprimitive
Konstanten zwischen HAL und API abgleichen
- Empfehlungen für die Zuordnung zwischen öffentlichen API-Konstanten (im Framework als Platzhalter bezeichnet) und HAL-Konstanten, die die Platzhalter implementieren.
- Weitere Informationen zu diesem Prozess finden Sie unter Designprinzipien für die empfohlene Kartierung.
-
- Anleitung zum Festlegen von haptischen Effekten Anhand dieser Anleitung können Sie eine schnelle Prüfung Ihrer Hardware durchführen.
Im Folgenden werden diese Schritte genauer beschrieben.
Schritt 1: Konstanten implementieren
Führen Sie diese Prüfungen durch, um festzustellen, ob Ihr Gerät die Mindestanforderungen für die Implementierung von Haptik erfüllt:
Abbildung 2: Effekte implementieren
Abbildung 3: Primitive implementieren
Prüfen Sie den Implementierungsstatus der folgenden haptischen Konstanten.
Haptische Konstanten | Standorte und Zusammenfassungen |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classHaptische Konstanten in VibrationEffect enthalten keine Eingabeereignisse und haben keine UI-Elemente. Konstanten enthalten stattdessen den Begriff „Energieniveaus“, z. B. EFFECT_CLICK und EFFECT_HEAVY_CLICK , die von
createPredefined() aufgerufen werden. |
Die unten beschriebenen alternativen Vibrationen werden auf Geräten ausgeführt, die die VibrationEffect
-Konstanten nicht implementieren. Es wird empfohlen, diese Konfigurationen so zu aktualisieren, dass sie auf solchen Geräten optimal funktionieren.
EFFECT_CLICK
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die Zeiteinstellungen unterframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
EFFECT_HEAVY_CLICK
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die Zeiteinstellungen unterframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
EFFECT_DOUBLE_CLICK
Eine Wellenform-Vibration, die mit
VibrationEffect.createWaveform
und den Timings (0, 30, 100, 30) erstellt wurde.EFFECT_TICK
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die Zeiteinstellungen unterframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
Abbildung 4: Feedbackkonstanten implementieren
Prüfen Sie den Status der folgenden Konstanten für öffentliches Feedback.
Haptische Konstanten | Standorte und Zusammenfassungen |
---|---|
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS ,
KEYBOARD_RELEASE , KEYBOARD_TAP , LONG_PRESS ,
TEXT_HANDLE_MOVE , VIRTUAL_KEY ,
VIRTUAL_KEY_RELEASE , CONFIRM , REJECT ,
GESTURE_START , GESTURE_END |
HapticFeedbackConstants -KlasseHaptische Konstanten in HapticFeedbackConstants unterstützen Eingabeereignisse mit bestimmten UI-Elementen wie KEYBOARD_PRESS und KEYBOARD_RELEASE , die von performHapticFeedback() aufgerufen werden. |
Schritt 2: Primitive implementieren
Haptische Primitive in VibrationEffect.Composition
haben eine skalierbare Intensität, die Entwickler über addPrimitive(int primitiveId, float scale, int delay)
verwenden können.
Die Primitiven lassen sich in zwei Kategorien unterteilen:
Kurze Primitive:Primitive mit kurzer Dauer, in der Regel weniger als 20 ms. Dazu gehören
CLICK
,TICK
undLOW_TICK
.Chirp-Primitive: Primitive mit variabler Amplitude und Frequenz, in der Regel mit einer längeren Dauer als kurze Primitive. Das sind
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
undSPIN
.
Kurze Primitive
Kurze Primitive können durch das Beschleunigungsprofil der Vibrationsmotorausgabe beschrieben werden. Die verwendete absolute Frequenz variiert für jedes Primitive je nach Resonanzfrequenz des Aktors. Weitere Informationen zur Hardwareeinrichtung und zu Tools zur Messung der Ausgabe finden Sie unter Testgeräte einrichten.
Ein wertvoller Qualitätsmesswert für kurze Vibrationen ist das Puls-zu-Ring-Verhältnis (PRR), das in Abbildung 5 dargestellt ist. Der PRR wird als Verhältnis zwischen dem Hauptpuls, definiert durch das Signal innerhalb des Zeitfensters, in dem die Amplitude auf 10% der Spitzenamplitude abnimmt, und dem Ringpuls, definiert durch das Signal, in dem die Amplitude von 10% der Spitzenamplitude auf weniger als 1% der Spitzenamplitude abnimmt, definiert. Weitere Informationen zur PRR finden Sie unter Wellenform analysieren. Informationen zum Analysieren und Vergleichen von Ergebnissen finden Sie unter Ergebnisse mithilfe der Leistungskarte vergleichen.
Abbildung 5: Definition des Pulse-to-Ring-Verhältnisses
Wenden Sie kurze Primitive als Feedback für Nutzereingaben an oder spielen Sie sie in längeren Kompositionen ab, um weiche Texturen zu erzeugen. Das bedeutet, dass sie in der Regel häufig ausgelöst und in schneller Folge abgespielt werden. Die wahrgenommene Intensität eines einzelnen kurzen Primitives kann die größere Effektintensität verstärken. Daher sollten Sie ein einzelnes oder niedriges Zifferblattelement mit einer größeren Komposition kalibrieren, z. B. 100 aufeinanderfolgende Markierungen.
Klick-Attribution
Das Klick-Primitive ist ein starker, klarer Effekt, der in der Regel nahe der Resonanzfrequenz eines Geräts arbeitet, um in kurzer Zeit eine maximale Leistung zu erzielen. Sie ist stärker und tiefer als die anderen Primitiven und wird mit maximaler Intensität ausgeführt.
Verwenden Sie gegebenenfalls eine Motorübersteuerung am Anfang und eine aktive Bremsung am Ende, um eine kurze Anlauf- und Abschaltzeit des Motors zu erreichen. Bei einigen Motoren kann eine schnellere Beschleunigung durch Verwendung einer Rechteckwelle anstelle einer Sinuswelle erreicht werden. Abbildung 6 zeigt ein Beispiel für ein Ausgabebeschleunigungsprofil für das Klick-Attribut:
Abbildung 6 Beispiel für ein Ausgabebeschleunigungsprofil für Klick-Primitive
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 12 ms Limit: < 30 ms |
Beschleunigung der Spitzenleistung |
Ziel: 2G Limit: > 1 G |
Häufigkeit | Ungefähr bei der Resonanzfrequenz |
Häkchen (leichtes Häkchen)
Das Tick-Primitive ist ein scharfer, kurzer Effekt, der in der Regel in einem höheren Frequenzbereich verwendet wird. Dieses Muster kann auch als Klick mit mittlerer Intensität, höherer Häufigkeit und kurzem Tail beschrieben werden. Dasselbe gilt für eine kurze Einschwingzeit mit Motorüberlastung oder einem Rechtecksignal für den Anfang und aktiver Bremsung beim Versatz. Abbildung 7 zeigt ein Beispiel für ein Ausgabebeschleunigungsprofil für das Tick-Primitive:
Abbildung 7. Beispiel für ein Ausgabebeschleunigungsprofil für das Tick-Primitive
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 5 ms Limit: < 20 ms |
Beschleunigung der Spitzenleistung |
Ziel: Hälfte von Limit: Zwischen 0,5 G und 1 G |
Häufigkeit |
Ziel: 2-fache Resonanzfrequenz Grenzwert: < 500 Hz |
Primitive mit niedrigem Tick
Das Low-Tick-Primitive ist eine weichere, schwächere Version eines Light-Ticks, das in einem niedrigeren Frequenzbereich arbeitet, um dem Effekt mehr Körper zu verleihen. Dieses Element kann auch als Klick mit mittlerer Intensität und geringerer Häufigkeit beschrieben werden, der wiederholt für dynamisches Feedback verwendet werden soll. Dieselben Empfehlungen gelten für eine kurze Einschwingzeit mit Motorübersteuerung oder einem Rechtecksignal für den Anfang. Abbildung 8 zeigt ein Beispiel für ein Ausgabebeschleunigungsprofil für das Low-Tick-Primitive:
Abbildung 8. Beispiel für ein Ausgabebeschleunigungsprofil für ein Low-Tick-Primitive
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 12 ms Limit: < 30 ms |
Beschleunigung der Spitzenleistung |
Ziel: 1/4 Limit: Zwischen 0,2 G und 0,5 G |
Häufigkeit |
Ziel: 2/3 der Resonanzfrequenz Grenzwert: < 100 Hz |
Chirp-Primitive
Chirp-Primitive können durch die Eingabesignale für die Spannungsstufe und die Vibrationsfrequenz beschrieben werden. Die Beschleunigung, die der Motor in verschiedenen Frequenzbereichen liefern kann, hängt von der Frequenzgangkurve des Aktors ab. Die Frequenzbereiche und Spannungsstufen müssen für jedes Gerät angepasst werden.
Primitiver Wert für langsame Steigerung
Der langsame Anstieg ist ein langsamer Amplituden- und Frequenzsweep nach oben mit sanftem Beginn und kontinuierlich steigender Vibrationsintensität während des Sweeps. Sie kann durch einen gleichmäßigen Durchlauf sowohl der Amplitude als auch der Frequenz mit einem niedrigeren Frequenzbereich implementiert werden, der außerhalb der Resonanz liegt. Abbildung 9 zeigt die Eingabeparameter und ein Beispiel für ein Ausgabebeschleunigungsprofil für diese Implementierung. Die rote Linie entspricht den Amplitudenlabels auf der linken Seite und zeigt, wie sich die Vibrationsamplitude im Zeitverlauf ändert. Die blaue Linie entspricht den Frequenzlabels auf der rechten Seite und gibt an, wie sich die Vibrationsfrequenz im Zeitverlauf ändert.)
Abbildung 9. Eingabeparameter und Beispiel für ein Ausgabebeschleunigungsprofil für das Primitive „Langsames Ansteigen“
Wenn die Frequenz des Motors begrenzt ist (nicht stark genug von der Resonanzfrequenz entfernt), ist eine alternative Implementierung ein Sinussweep von 1/2 x bis 1 x der Resonanzfrequenz. Die Motorresonanz trägt dazu bei, dass der Signalpegel am Ende erreicht wird.
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 500 ms Toleranz: 20 ms |
Beschleunigung der Spitzenleistung |
Ziel: 0,5 G Limit: Zwischen 0,5 G und 1 G |
Häufigkeit |
Ziel: 1/2 bis 2/3 der Resonanzfrequenz Alternative: 1/2 der Resonanzfrequenz |
Primitiver Wert für schnelles Ansteigen
Der schnelle Anstieg ist ein schneller Anstieg der Amplitude und Frequenz nach oben mit sanftem Beginn und gleichmäßig zunehmender Vibrationsintensität während des gesamten Anstiegs. Die Ziele für die Ausgabebeschleunigung und die Vibrationsfrequenz sollten mit dem Primitiven „Langsames Ansteigen“ übereinstimmen, aber in kürzerer Zeit erreicht werden. Abbildung 10 zeigt die Vibrationseingabeparameter und ein Beispiel für ein Ausgabebeschleunigungsprofil für das Primitive „Langsames Ansteigen“. Die rote Linie entspricht den Amplitudenlabels auf der linken Seite und zeigt, wie sich die Vibrationsamplitude im Zeitverlauf ändert. Die blaue Linie entspricht den Frequenzlabels auf der rechten Seite und gibt an, wie sich die Vibrationsfrequenz im Zeitverlauf ändert.)
Abbildung 10. Eingabeparameter und Beispiel für ein Ausgabebeschleunigungsprofil für das Primitive „Schnell ansteigend“
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 150 ms Toleranz: 20 ms |
Beschleunigung der Spitzenleistung |
Ausrichtung: Gleich wie Limit: Wie bei |
Häufigkeit |
Ausrichtung: Gleich wie Alternative: Entspricht |
Schneller Abfall
Der schnelle Abfall ist ein schneller Amplituden- und Frequenzsweep nach unten mit einem sanften Beginn. Sie können eine höhere Frequenz als Ausgangspunkt verwenden, während der Motor hochfährt, um die maximale Ausgangsbeschleunigung zu erreichen. Die Frequenz sollte während des gesamten Sweeps kontinuierlich abnehmen, auch während der Anstiegszeit. Abbildung 11 zeigt die Eingabeparameter und ein Beispiel für ein Ausgabebeschleunigungsprofil für diese Implementierung. Die rote Linie entspricht den Amplitudenlabels auf der linken Seite und zeigt, wie sich die Vibrationsamplitude im Zeitverlauf ändert. Die blaue Linie entspricht den Frequenzlabels auf der rechten Seite und zeigt, wie sich die Vibrationsfrequenz im Zeitverlauf ändert.)
Abbildung 11 Eingabeparameter und Beispiel für ein Ausgabebeschleunigungsprofil für das Primitive „Schnell fallen“
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 100 ms Toleranz: 20 ms |
Beschleunigung der Spitzenleistung |
Ziel: 1 G Limit: 0,5 G bis 2 G |
Häufigkeit |
Ziel: 2- bis 1-fache Resonanzfrequenz |
Thud-Primitive
Der Donner ist ein dumpfer, tiefer, percussiver Effekt, der das physische Gefühl des Klopfens auf hohle Holz simuliert. Dieser Primitive arbeitet in einem niedrigen Frequenzbereich, ähnlich wie das Low-Tick-Primitive, um dem Effekt mehr Körper zu verleihen. Sie können das Thud-Primitive als einen Amplituden- und Frequenzsweep nach unten in einem niedrigeren Frequenzbereich (vorzugsweise unter 100 Hz) implementieren. Abbildung 12 zeigt die Eingabeparameter und ein Beispiel für ein Ausgabebeschleunigungsprofil für diese Implementierung. Die rote Linie entspricht den Amplitudenlabels auf der linken Seite und zeigt, wie sich die Vibrationsamplitude im Zeitverlauf ändert. Die blaue Linie entspricht den Frequenzlabels auf der rechten Seite und zeigt, wie sich die Vibrationsfrequenz im Zeitverlauf ändert.)
Abbildung 12 Eingabeparameter und Beispiel für das Ausgabebeschleunigungsprofil für das „Thud“-Primitive
Wenn die Frequenzantwort des Motors begrenzt ist, kann eine alternative Implementierung mit einem Antriebssignal mit voller Intensität bei der Resonanzfrequenz beginnen und auf die niedrigste mögliche Frequenz abfallen, die noch wahrgenommen werden kann. Bei diesem Ansatz muss möglicherweise die Intensität des Antriebssignals bei der niedrigeren Frequenz erhöht werden, damit die Vibration spürbar ist.
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 300 ms Toleranz: 20 ms |
Beschleunigung der Spitzenleistung |
Ziel: 0,25 G Limit: Zwischen 0,2 G und 0,5 G |
Häufigkeit |
Ziel: 1/2 bis 1/3 der Resonanzfrequenz Alternative: 1- bis 2-fache Resonanzfrequenz |
Drehen-Primitive
Die Drehung simuliert ein Drehmomentum mit schnellen Auf- und Abbewegungen mit einem leichten Akzent in der Mitte. Die Drehung kann durch unabhängiges Schwenken der Amplitude und der Frequenz in entgegengesetzten Richtungen und anschließende Rückwärtsbewegung implementiert werden. Verwenden Sie einen niedrigeren Frequenzbereich (vorzugsweise unter 100 Hz). Abbildung 13 zeigt die Eingabeparameter und ein Beispiel für ein Ausgabebeschleunigungsprofil für diese Implementierung. Die rote Linie entspricht den Amplitudenlabels auf der linken Seite und zeigt, wie sich die Vibrationsamplitude im Zeitverlauf ändert. Die blaue Linie entspricht den Frequenzlabels auf der rechten Seite und zeigt, wie sich die Vibrationsfrequenz im Zeitverlauf ändert.)
Wir empfehlen, das Primitive „Drehen“ zweimal hintereinander oder dreimal in Kompositionen aufzurufen, um ein sich drehendes und unruhiges Gefühl zu erzeugen.
Wenn die Frequenz des Motors begrenzt ist, können Sie alternativ einen schnellen Sinussweep von 1/2 x bis 1 x der Resonanzfrequenz und zurück ausführen. Durch die Motorresonanz erhält das Signal automatisch einen Akzent in der Mitte.
Abbildung 13 Eingabeparameter und Beispiel für ein Ausgabebeschleunigungsprofil für das Primitive „Drehen“
Parameter | Richtlinie |
---|---|
Dauer |
Ziel: 150 ms Toleranz: 20 ms |
Beschleunigung der Spitzenleistung |
Ziel: 0,5 G Limit: Zwischen 0,25 G und 0,75 G |
Häufigkeit |
Ziel: 2/3 bis 1/3, dann zurück zu 1/2 der Resonanzfrequenz Alternative: 2/3 bis 1 x, dann zurück zu 1/2 der Resonanzfrequenz |
Schritt 3: Konstanten zwischen HAL und API zuordnen
In Schritt 3 werden empfohlene Zuordnungen zwischen öffentlichen HAL-Konstanten und API-Konstanten dargestellt. Wenn die in Schritt 1 geprüfte Hardware die HAL-Konstanten nicht implementiert, aktualisieren Sie in Schritt 3 die in Schritt 1 beschriebenen Fallback-Muster, um ähnliche Ausgaben zu generieren. Bei der Zuordnung werden zwei verschiedene Standardmodelle verwendet:
Diskretes Modell (einfach)
- Die Amplitude ist die Schlüsselvariable dieses Modells. Jede Entität in der HAL steht für eine andere haptische Amplitude.
- Dieses Modell ist eine Mindestanforderung für die Implementierung der grundlegenden haptischen UX.
- Eine erweiterte haptische UX erfordert eine erweiterte Hardware und ein erweitertes Modell (kontinuierliches Modell).
Kontinuierliches Modell (erweitert)
- Textur und Amplitude sind die wichtigsten Variablen dieses Modells. Jede Entität in der HAL steht für unterschiedliche haptische Texturen. Die Amplitude jeder HAL-Entität wird durch den Skalierungsfaktor (
S
) gesteuert. - Für dieses Modell ist eine erweiterte Hardware erforderlich. Wenn OEMs eine erweiterte haptische UX mit
VibrationEffect.Composition
verwenden möchten (um die neuesten Haptik-APIs optimal zu nutzen), wird empfohlen, ihre Hardware mit diesem Modell zu implementieren.
- Textur und Amplitude sind die wichtigsten Variablen dieses Modells. Jede Entität in der HAL steht für unterschiedliche haptische Texturen. Die Amplitude jeder HAL-Entität wird durch den Skalierungsfaktor (
Diskretes Modell
Es wird empfohlen, alle in der API bereitgestellten öffentlichen Konstanten den entsprechenden HAL-Konstanten zuzuordnen. Ermitteln Sie zuerst, wie viele haptische Wellenformen mit diskreter Amplitude das Gerät in der HAL definieren kann. Eine konkrete Frage, die auf diesem Konzept basiert, könnte so lauten: Wie viele haptische Effekte mit einzelnen Impulsen und für Menschen wahrnehmbaren Amplitudenunterschieden können auf meinem Smartphone definiert werden? Die Antwort auf diese Frage bestimmt die Zuordnung.
Die Definition von HAL-Konstanten ist ein hardwareabhängiger Prozess. Ein Einsteiger-Smartphone hat beispielsweise möglicherweise nur die Hardwarekapazitäten, um eine einzelne haptische Wellenform zu erzeugen. Geräte mit erweiterten Hardwarekomponenten erzeugen einen breiteren Bereich diskreter Amplitudenebenen und können mehrere haptische Wellenformen in der HAL definieren. Bei der HAL-API-Konstantenzuordnung wird die HAL-Konstante (unter Verwendung der mittleren Amplitude als Baseline) verwendet, um dann stärkere oder schwächere Effekte anzuordnen.
Abbildung 14. HAL-konstanter Bereich nach Amplitude
Wenn die Anzahl der HAL-Konstanten mit diskreter Amplitude definiert ist, ist es an der Zeit, HAL- und API-Konstanten der Anzahl der HAL-Konstanten zuzuordnen. Bei diesem Zuordnungsprozess kann eine einzelne Impuls-API-Konstante in bis zu drei diskrete Gruppen von Amplitudenebenen segmentiert werden. Die Segmentierung von API-Konstanten basiert auf UX-Prinzipien für begleitende Eingabeereignisse. Weitere Informationen finden Sie unter Haptik im UX-Design.
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 mittlere und hohe Amplitude zusammenführen. Ein Beispiel für diese Vorstellung in der Praxis wäre die Zuordnung von EFFECT_CLICK
und EFFECT_HEAVY_CLICK
zurselben HAL-Konstante, also der HAL-Konstante für die mittlere Amplitudenebene. Wenn Ihr Gerät nur eine HAL-Konstante mit diskreter Amplitude unterstützt, sollten Sie alle drei Ebenen in eine zusammenführen.
Kontinuierliches Modell
Das kontinuierliche Modell mit Amplitudenskalierung kann angewendet werden, um HAL-Konstanten zu definieren. 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 zu definieren (HAL_H0
× S1
= H0S1
= EFFECT_TICK
), wie in Abbildung 16 dargestellt. Durch die Amplitudenskalierung des kontinuierlichen Modells kann ein Gerät eine kleine Anzahl von HAL-Konstanten mit unterschiedlichen Texturen speichern und Amplitudenvariationen 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.
Abbildung 16: Konstanter HAL-Bereich nach Textur (HAL_H0) und Amplitudenskala (S)
Abbildung 17. HAL-API-Konstantenzuordnung: Kontinuierliches Modell
Im kontinuierlichen Modell stehen unterschiedliche HAL-Konstanten nicht für unterschiedliche Amplituden, sondern für unterschiedliche haptische Texturen. Die Amplitude kann mit dem Skalierungsfaktor (S
) 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 eine zunehmende Variation von einer HAL zu vielen API-Konstanten mit Amplitudenskalierung.
Abbildung 18 Variation mit Amplitudenskalierbarkeit 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 Verwendung verschiedener HAL-Konstanten klar voneinander unterschieden werden. Dieser Ansatz wird empfohlen, wenn Sie der Textur mehr Abwechslung verleihen möchten.
Schritt 4: Hardware prüfen
Bei der Hardwarebewertung werden drei haptische Effekte definiert, die für diese spezifische Bewertung als Effekt 1, 2 und 3 gekennzeichnet sind.
Effekt 1: Vordefinierte kurze haptische Konstanten
Die Konstante VibrationEffect.EFFECT_CLICK
ist der Grundeffekt oder der gemeinsame Nenner in der HAL-API-Zuordnung aus Schritt 2. Er ist dem am häufigsten verwendeten Effekt HapticFeedbackConstants.KEYBOARD_PRESS
zugeordnet.
Anhand dieser Beurteilung können Sie feststellen, ob Ihr Zielgerät für deutliche haptische Rückmeldungen geeignet ist.
Effekt 2: Kurzer benutzerdefinierter haptischer Effekt
Die Konstante VibrationEffect.createOneShot(20,255)
ist für benutzerdefinierte haptische Effekte. Für kurze, einzelne benutzerdefinierte Impulse wird eine maximale Dauer von 20 ms empfohlen. Ein einzelner Impuls von mehr als 20 ms wird nicht empfohlen, da er als summende Vibration wahrgenommen wird.
Abbildung 19. Kurzer benutzerdefinierter haptischer Effekt
Effekt 3: Langer benutzerdefinierter haptischer Effekt mit Amplitudenänderung
Die Konstante VibrationEffect.createWaveform(timings[], amplitudes[], int
repeat)
ist für lange benutzerdefinierte Effekte mit Amplitudenänderung vorgesehen. Die Fähigkeit, unterschiedliche Amplituden für benutzerdefinierte haptische Effekte zu erzeugen, ist einer der Indikatoren, um die Fähigkeiten des Geräts für ausdrucksstarke Haptik zu bewerten. Die empfohlenen Werte für timings []
und amplitudes []
sind {500, 500}
und {128, 255}
. Sie stellen einen steigenden Amplitudentrend von 50% auf 100 % bei einer Abtastrate von 500 ms dar.
Abbildung 20. Langer benutzerdefinierter haptischer Effekt mit Amplitudenänderung
Mit der Methode Vibrator.hasAmplitudeControl()
kannst du die Hardwarefunktionen der Amplitudenregelung für Effekt 3 prüfen. Das Ergebnis muss true
sein, damit VibrationEffect.createWaveform
wie beabsichtigt mit variabler Amplitude ausgeführt wird.
Abbildung 21. Bewertung des haptischen Effekts 1, 2 und 3 durch die Testpersonen
Subjektive Bewertung durchführen
Führen Sie zuerst eine subjektive Bewertung durch, um die Kohärenz schnell zu überprüfen. Ziel der subjektiven Bewertung ist es, die Amplitude der haptischen Effekte zu beobachten, um festzustellen, ob das Gerät Haptik mit für Menschen wahrnehmbaren Amplituden erzeugen kann.
Eine konkrete Frage, die sich um diesen Begriff dreht, könnte so lauten: Kann das Gerät wie erwartet wahrnehmbare haptische Effekte für die Nutzer erzeugen? Wenn Sie diese Frage beantworten, können Sie nicht zufriedenstellende Haptik vermeiden, einschließlich unmerklicher Haptik, die Nutzer nicht spüren können, oder unbeabsichtigter Haptik, bei der Wellenformen nicht wie beabsichtigt Muster erzeugen.
Erweiterte Bewertung durchführen
Wir empfehlen dringend, erweiterte Qualitätsprüfungen durchzuführen. Erweiterte Qualitätsbewertungen charakterisieren quantifizierbare Attribute von haptischen Effekten, um hochwertige Haptik zu implementieren. Nach Abschluss der Tests sollten Gerätehersteller den aktuellen haptischen Status diagnostizieren können, sodass sie Ziele zur Verbesserung der Gesamtqualität festlegen können. Weitere Informationen finden Sie unter Hardwarebewertung.