Einer der grundlegendsten Anwendungsfälle für Haptik ist das Geben von Feedback zu Nutzerinteraktionen. Gute Anwendungsfälle für haptisches Feedback sind beispielsweise die Zeitauswahl, der Tastendruck auf einer virtuellen Tastatur und die Textauswahl. Weitere Informationen darüber, wann und wie haptisches Feedback angewendet wird, finden Sie unter Haptik-Designprinzipien.
Auf dieser Seite werden drei Möglichkeiten für haptisches Feedback beschrieben.
- Verwenden Sie einen
View
(empfohlen). Dieser Ansatz ist aktionsorientiert, wird am breitesten unterstützt und erfordert nicht die BerechtigungVIBRATE
. - Vordefinierte
VibrationEffect
verwenden. Dieser Ansatz ist flexibler, hat aber auch Nachteile. - Erweiterte Kompositionen mit Primitiven verwenden Diese Methode ist neuer und noch flexibler, erfordert jedoch eine spezifische Geräteunterstützung.
Bei diesen Methoden werden auf Geräteebene definierte Primitive verwendet, um ein hochwertiges Feedback zu liefern, das auf das jeweilige Gerät zugeschnitten ist.
Bei allen Methoden für haptisches Feedback werden standardmäßig die Einstellungen des Nutzers per Touchscreen berücksichtigt.
View
-Komponenten verwenden, um haptisches Feedback zu generieren
Mit der Methode View.performHapticFeedback
können Sie haptisches Feedback generieren. Die durch HapticFeedbackConstants
definierten haptischen Konstanten konzentrieren sich auf ihre Funktionalität in einer Anwendung, nicht auf die Art des durchgeführten haptischen Effekts.
Die zugrunde liegende Implementierung kann je nach Gerät und Hardwarefunktion variieren. Die App muss jedoch nur die Art des Feedbacks berücksichtigen, das in einem bestimmten Kontext bereitgestellt wird. Wenn Sie sich auf die Funktionalität konzentrieren, können Sie haptisches Feedback für ähnliche Interaktionen aktivieren. Die Nutzenden lernen im Laufe der Zeit, unterschiedlichen haptischen Empfindungen unterschiedliche Bedeutungen zuzuordnen.
Voraussetzungen: Haptisches Feedback aktivieren
Solange das View
sichtbar ist, kann für die zugehörigen Ereignisse haptisches Feedback verwendet werden.
Einige Ereignisse, z. B. langes Drücken, haben Standardhaptik, die ausgelöst wird, wenn ein Listener der Ansicht das Ereignis verarbeitet (gibt true
zurück).
Ein Android-View
kann haptisches Feedback deaktivieren, indem die Eigenschaft View.hapticFeedbackEnabled
auf false
gesetzt wird. Das Deaktivieren dieses Attributs führt zu einem Standardfeedback.
Die Methode performHapticFeedback
berücksichtigt auch die Systemeinstellung HAPTIC_FEEDBACK_ENABLED
, mit der der Nutzer sie potenziell für das gesamte System deaktivieren kann.
Im Gegensatz zu anderen haptischen APIs ist für die Verwendung von HapticFeedbackConstants
mit einer View
die Berechtigung VIBRATE
nicht erforderlich.
HapticFeedbackConstant
auswählen
Wenn Sie View
-Komponenten mit HapticFeedbackConstants
verwenden, müssen Sie die spezifische Geräteunterstützung nicht prüfen, da diese Konstanten bei Bedarf ein Fallback-Verhalten haben. Der einzige Aspekt ist die SDK-Ebene der gewünschten Konstante.
Beispiel 1: Tastendruck
In diesem Beispiel wird gezeigt, wie Sie einer Berührungseingabe in View
mithilfe von Touch-Listenern ein haptisches Feedback hinzufügen. Die Effekte simulieren das Gefühl, auf eine
Taste zu drücken und sie dann wieder loszulassen.
Kotlin
class HapticTouchListener : View.OnTouchListener { override fun onTouch(View view, MotionEvent event) : Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) MotionEvent.ACTION_UP -> view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE) } return true } }
Java
class HapticTouchListener implements View.OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); break; case MotionEvent.ACTION_UP: view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE); break; } return true; } }
Beispiel 2: Schaltfläche „Senden“
Anwendungsfälle für haptisches Feedback gehen über die Simulation einer physischen Interaktion mit dem Gerät hinaus. Sie können auch verwendet werden, um eine abstrakte Bedeutung zu vermitteln. Ein CONFIRM
-Effekt wird im Allgemeinen von einer kurzen und leichten Vibration erwartet, während ein REJECT
eine stärkere Rückkopplung auf Signalausfälle sein könnte. Das wird im folgenden Beispiel für Feedback zur Schaltfläche „Senden“ veranschaulicht.
Kotlin
submitButton.setOnClickListener { view -> val successful = performSubmit() if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM) } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT) } }
Java
submitButton.setOnClickListener(view -> { boolean successful = performSubmit(); if (successful) { view.performHapticFeedback(HapticFeedbackConstants.CONFIRM); } else { view.performHapticFeedback(HapticFeedbackConstants.REJECT); } });
Vordefiniertes VibrationEffect
-Objekt verwenden, um haptisches Feedback zu generieren
Beim View
-basierten Ansatz liegt der Fokus auf der Nutzerinteraktion. Sie wird aus Gründen der Konsistenz im gesamten System bevorzugt. Sie können aber auch bestimmte vordefinierte VibrationEffect
APIs aufrufen, um benutzerdefinierte Effekte für haptisches Feedback zu erhalten.
Vordefinierte Effekte sind als VibrationEffect
-Konstanten verfügbar und können auf Unterstützung geprüft und mit dem Vibrator
-Dienst wiedergegeben werden, wie in den folgenden Beispielen gezeigt.
Geräteunterstützung von VibrationEffect
APIs
Bei der einfachen Verwendung sollte nicht geprüft werden müssen, ob einzelne VibrationEffect
APIs unterstützt werden. Mit APIs wie Vibrator.areEffectsSupported
und Vibrator.areAllEffectsSupported
wird ermittelt, ob auf dem Gerät eine benutzerdefinierte Implementierung der Konstante vorhanden ist. Wenn kein benutzerdefinierter Effekt vorhanden ist, kann Ihre App die Effekte trotzdem abspielen und eine plattformdefinierte Fallback-Implementierung verwenden.
Weitere Informationen finden Sie unter Vordefinierte VibrationEffect
.
Voraussetzungen: Vibration und VIBRATE
-Berechtigung laden
Die meisten Vibrationen können mit dem Dienst Vibrator
abgespielt werden, der so geladen werden kann:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
Die App benötigt die Berechtigung VIBRATE
, um das Gerät mit diesem Dienst zu vibrieren. Die Berechtigung kann der Manifestdatei der Anwendung hinzugefügt werden:
<uses-permission android:name="android.permission.VIBRATE"/>
Vordefinierte VibrationEffect
wiedergeben
Vordefinierte Effekte können mit VibrationEffect.createPredefined
vorbereitet und dann mit einer der vibrate
-Methoden in Vibrator
wiedergegeben werden.
In diesem Beispiel wird ein Klickeffekt verwendet.
Kotlin
val vibrator = context.getSystemService(Vibrator::class.java) ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
Java
Vibrator vibrator = context.getSystemService(Vibrator.class); ... // Requires VIBRATE permission vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK));
Erweiterte Kompositionen mit Primitiven verwenden
Die VibrationEffect.Composition
API bietet zusätzliche Möglichkeiten für haptisches Feedback. Im Gegensatz zu den Effekten haben diese Primitive jedoch keine Fallbacks auf Systemebene, was bedeutet, dass die Primitive und andere vom Gerät unterstützte Funktionen sorgfältig geprüft werden müssen.
Die Verwendung dieser APIs wird unter Benutzerdefinierte haptische Effekte erstellen ausführlicher erläutert.