Haptisches Feedback in Android-Apps mit View-Komponenten, vordefinierten VibrationEffect-APIs und zeitachsenverankerten Kompositionen mit VibrationEffect.Builder implementieren. keywords_public: > Android-Entwicklung, Haptik, haptisches Feedback, Benutzeroberfläche, Views, VibrationEffect, View.performHapticFeedback, Vibrator, haptische Konstanten
Einer der grundlegendsten Anwendungsfälle für Haptik ist die Bereitstellung von Feedback für Nutzerinteraktionen. Die Auswahl von Uhrzeiten, das Drücken einer Taste auf einer Bildschirmtastatur und die Textauswahl sind häufige Beispiele für gute Anwendungsfälle für haptisches Feedback. Weitere Informationen dazu, wann und wie Haptik angewendet werden sollte, finden Sie unter Designprinzipien für Haptik.
Auf dieser Seite werden drei Möglichkeiten beschrieben, haptisches Feedback zu geben.
- Verwenden Sie ein
View(empfohlen). Dieser Ansatz ist handlungsorientiert, wird am häufigsten unterstützt und erfordert nicht die BerechtigungVIBRATE. - Vordefinierte
VibrationEffectverwenden Dieser Ansatz bietet mehr Flexibilität, hat aber auch Nachteile. - Zeitachsenverankerte Kompositionen mit
VibrationEffect.Builderverwenden Dieser Ansatz ist am flexibelsten, da Sie Voreinstellungen, Hüllkurven und andere Vibrationselemente entlang einer Zeitachse mit integrierter automatischer Fallback-Unterstützung anordnen können.
Bei diesen Methoden werden auf Geräteebene definierte Primitiven verwendet, um 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 für Touch-Feedback berücksichtigt.
View-Komponenten zum Generieren von haptischem Feedback verwenden
Verwenden Sie die Methode View.performHapticFeedback, um haptisches Feedback zu generieren. Die von HapticFeedbackConstants definierten haptischen Konstanten konzentrieren sich auf ihre Funktionalität in einer Anwendung und nicht auf die Art des haptischen Effekts.
Die zugrunde liegende Implementierung kann je nach Gerät und Hardwarefunktionen variieren. Die App muss jedoch nur den Typ des Feedbacks berücksichtigen, das in einem bestimmten Kontext bereitgestellt werden soll. Wenn Sie sich auf die Funktionalität konzentrieren, können Sie haptisches Feedback für ähnliche Interaktionen aktivieren. Mit der Zeit lernen Nutzer, unterschiedliche Bedeutungen mit unterschiedlichen haptischen Empfindungen zu verknüpfen.
Voraussetzungen: Haptisches Feedback aktivieren
Solange das View sichtbar ist, kann haptisches Feedback für seine Ereignisse verwendet werden.
Für einige Ereignisse, z. B. „Berühren und halten“, gibt es Standard-Haptik, die ausgelöst wird, wenn ein Listener für die Ansicht das Ereignis verarbeitet (true zurückgibt).
Ein Android-View kann das haptische Feedback deaktivieren, indem er das Attribut View.hapticFeedbackEnabled auf false setzt. Wenn Sie diese Property deaktivieren, wird Standardfeedback verwendet.
Bei der Methode performHapticFeedback wird auch die Systemeinstellung HAPTIC_FEEDBACK_ENABLED berücksichtigt, mit der der Nutzer sie möglicherweise für das gesamte System deaktivieren kann.
Im Gegensatz zu anderen Haptik-APIs ist für die Verwendung von HapticFeedbackConstants mit einem View nicht die Berechtigung VIBRATE erforderlich.
HapticFeedbackConstant auswählen
Wenn Sie View-Komponenten mit HapticFeedbackConstants verwenden, müssen Sie die Unterstützung für bestimmte Geräte nicht prüfen, da diese Konstanten bei Bedarf ein Fallback-Verhalten haben. Die einzige Überlegung ist das SDK-Level der gewünschten Konstante.
Beispiel 1: Tastendruck
In diesem Beispiel wird gezeigt, wie Sie mit Touch-Listenern ein haptisches Feedback für eine Touch-Eingabe in View hinzufügen. Die Effekte simulieren das Gefühl, eine Taste zu drücken und dann 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: Button „Senden“
Die 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. Beispiel: Bei einem CONFIRM-Effekt wird eine kurze und leichte Vibration erwartet, während ein REJECT ein stärkeres Feedback sein könnte, um einen Fehler zu signalisieren. Dies wird im folgenden Beispiel für Feedback zu einer Schaltfläche zum 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); } });
Vordefinierte VibrationEffect verwenden, um haptisches Feedback zu generieren
Beim View-basierten Ansatz liegt der Fokus auf der Nutzerinteraktion. Verwenden Sie ihn daher, um die Konsistenz im gesamten System zu gewährleisten. Sie können aber auch bestimmte vordefinierte VibrationEffect-APIs für benutzerdefinierte haptische Feedbackeffekte aufrufen.
Vordefinierte Effekte sind als VibrationEffect-Konstanten verfügbar. Sie können mit dem Vibrator-Dienst auf Unterstützung geprüft und wiedergegeben werden, wie in den folgenden Beispielen gezeigt.
Unterstützung von VibrationEffect-APIs auf Geräten
Bei der grundlegenden Verwendung sollte es nicht erforderlich sein, die Unterstützung einzelner VibrationEffect-APIs zu prüfen. Die APIs wie Vibrator.areEffectsSupported und Vibrator.areAllEffectsSupported werden verwendet, um festzustellen, ob das Gerät eine angepasste Implementierung der Konstanten hat. Wenn ein benutzerdefinierter Effekt nicht vorhanden ist, kann Ihre App die Effekte trotzdem wiedergeben und eine plattformdefinierte Fallback-Implementierung verwenden.
Weitere Informationen finden Sie unter Vordefinierte VibrationEffect.
Voraussetzungen: Vibrator und Berechtigung VIBRATE laden
Die meisten Vibrationen können mit dem Vibrator-Dienst wiedergegeben 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);
Ihre App muss die Berechtigung VIBRATE haben, um das Gerät mit diesem Dienst vibrieren zu lassen. Sie können diese Berechtigung der Manifestdatei der Anwendung hinzufügen:
<uses-permission android:name="android.permission.VIBRATE"/>
Vordefinierte VibrationEffect abspielen
Vordefinierte Effekte können mit VibrationEffect.createPredefined vorbereitet und dann mit einer der vibrate-Methoden auf Vibrator wiedergegeben werden.
In diesem Beispiel wird ein Klick-Effekt abgespielt.
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));
Mit VibrationEffect.Builder Kompositionen erstellen
Ab Android 16 (4. Quartal 2026) bietet die VibrationEffect.Builder API die flexibelste und ausdrucksstärkste Möglichkeit, benutzerdefiniertes haptisches Feedback zu erstellen, indem diskrete Voreinstellungen, Hüllkurven und andere Vibrationselemente entlang einer Zeitachse angeordnet werden.
Außerdem bieten Kompositionen, die mit VibrationEffect.Builder erstellt wurden, eine integrierte automatische Fallback-Unterstützung für die unterstützten Elemente.
Das Erstellen haptischer Effekte mit VibrationEffect.Builder (und der VibrationEffect.Composition API) wird im Detail unter Benutzerdefinierte haptische Effekte erstellen beschrieben.