Haptische Konstanten und ‑primitive werden von der HAL des Vibrators definiert und vom Android-Framework öffentlichen APIs zugeordnet. 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
Konstanten implementieren
Entwickler können haptische Konstanten in VibrationEffect über VibrationEffect.createPredefined() verwenden. Sehen Sie sich den Implementierungsstatus der folgenden haptischen Konstanten an.
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 mit den Zeiteinstellungen unterframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
EFFECT_DOUBLE_CLICK
Eine Wellenform-Vibration, die mit
VibrationEffect.createWaveform
und den Zeitangaben (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
Entwickler können die haptischen Konstanten in HapticFeedbackConstants über View.performHapticFeedback() verwenden. Prüfen Sie den Status der folgenden öffentlichen Feedbackkonstanten.
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. |
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. Die PRR wird als das 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. Die Formel für die PRR lautet:
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 erreichen. 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 Primitive kann auch als Klick mit mittlerer Intensität und niedrigerer Häufigkeit beschrieben werden, der wiederholt für dynamisches Feedback verwendet werden soll. Dieselben Empfehlungen gelten für eine kurze Aufstellzeit mit Motorüberlastung oder einem Rechtecksignal für den ersten Start. 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 zunehmender Vibrationsintensität während des Sweeps. Sie kann durch einen kontinuierlichen 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 zeigt, 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 Signalgipfel 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 Steigen
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 zeigt, 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 Abwärtsgang der Amplitude und Frequenz 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 abwärtsgerichteten Amplituden- und Frequenzsweep 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 ein 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 |