Einer der grundlegendsten Anwendungsfälle für Haptik ist die Bereitstellung von Feedback zu Nutzerinteraktionen. Zeitauswahl, Tastenanschlag auf einer virtuellen Tastatur und Textauswahl sind gängige Beispiele für gute Anwendungsfälle für haptisches Feedback. Weitere Informationen dazu, wann und wie Sie Haptik anwenden sollten, finden Sie unter Designprinzipien für Haptik.
Auf dieser Seite werden drei Möglichkeiten beschrieben, wie Sie haptisches Feedback geben können.
- Verwenden Sie ein
View
(empfohlen). Dieser Ansatz ist aktionsorientiert, wird am häufigsten unterstützt und erfordert keineVIBRATE
-Berechtigung. - Verwenden Sie eine vordefinierte
VibrationEffect
. Dieser Ansatz ist flexibler, hat aber einige Nachteile. - Verwenden Sie erweiterte Kompositionen mit Primitivelementen. Diese Methode ist neuer und noch flexibler, erfordert aber eine spezielle Geräteunterstützung.
Bei diesen Methoden werden auf Geräteebene definierte Primitive 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 Touch-Feedback-Einstellungen des Nutzers 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, nicht auf die Art des ausgeführten haptischen Effekts.
Die zugrunde liegende Implementierung kann je nach Geräte- und Hardwarefunktionen variieren. Die App muss jedoch nur die Art des Feedbacks berücksichtigen, das in einem bestimmten Kontext gegeben werden soll. Wenn Sie sich auf die Funktionalität konzentrieren, können Sie haptisches Feedback für ähnliche Interaktionen aktivieren. Nutzer lernen mit der Zeit, verschiedenen haptischen Empfindungen unterschiedliche Bedeutungen zuzuordnen.
Voraussetzung: Haptisches Feedback aktivieren
Solange das Symbol View
sichtbar ist, kann für die zugehörigen Ereignisse haptisches Feedback verwendet werden.
Für einige Ereignisse wie das lange Drücken gibt es standardmäßige haptische Rückmeldungen, die ausgelöst werden, wenn ein Listener in der Ansicht das Ereignis verarbeitet (true
zurückgibt).
Ein Android-View
kann die haptische Rückmeldung deaktivieren, indem er das Attribut View.hapticFeedbackEnabled
auf false
festlegt. Wenn Sie diese Eigenschaft deaktivieren, wird standardmäßiges Feedback angezeigt.
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 haptischen APIs ist für die Verwendung von HapticFeedbackConstants
mit einer View
keine VIBRATE
-Berechtigung erforderlich.
HapticFeedbackConstant
auswählen
Wenn Sie View
-Komponenten mit HapticFeedbackConstants
verwenden, müssen Sie die Geräteunterstützung nicht bewerten, da diese Konstanten bei Bedarf ein Fallback-Verhalten haben. Die einzige Überlegung ist die SDK-Ebene der gewünschten Konstante.
Beispiel 1: Tastenanschlag
In diesem Beispiel wird gezeigt, wie Sie einer Touch-Eingabe in View
mithilfe von Touch-Listenern haptisches Feedback hinzufügen. Die Effekte simulieren das Gefühl, eine Taste gedrückt zu halten 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: 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. Beispielsweise wird für einen CONFIRM
-Effekt in der Regel eine kurze und leichte Vibration erwartet, während ein REJECT
-Effekt ein stärkeres Feedback für einen Fehler signalisieren 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); } });
Vordefinierte VibrationEffect
zum Generieren von haptischem Feedback verwenden
Beim View
-basierten Ansatz liegt der Fokus auf der Nutzerinteraktion. Sie wird bevorzugt, um für Konsistenz im gesamten System zu sorgen. Bestimmte vordefinierte VibrationEffect
APIs können jedoch auch für benutzerdefinierte haptische Feedbackeffekte aufgerufen werden.
Vordefinierte Effekte sind als VibrationEffect
-Konstanten verfügbar. Sie können wie in den folgenden Beispielen gezeigt mit dem Dienst Vibrator
auf Unterstützung geprüft und wiedergegeben werden.
Geräteunterstützung von VibrationEffect
APIs
Bei der grundlegenden Nutzung sollte es nicht erforderlich sein, die Unterstützung einzelner VibrationEffect
APIs zu prüfen. Mithilfe von APIs wie Vibrator.areEffectsSupported
und Vibrator.areAllEffectsSupported
wird ermittelt, ob das Gerät eine benutzerdefinierte Implementierung der Konstante hat. 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: Laden Sie den Vibrator und die Berechtigung VIBRATE
.
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 mithilfe dieses Dienstes zum Vibrieren zu bringen. Die Berechtigung kann der Manifestdatei der Anwendung hinzugefügt werden:
<uses-permission android:name="android.permission.VIBRATE"/>
Vordefinierte VibrationEffect
abspielen
Vordefinierte Effekte können mit VibrationEffect.createPredefined
erstellt und dann mit einer der vibrate
-Methoden auf Vibrator
wiedergegeben werden.
In diesem Beispiel wird ein Klickeffekt wiedergegeben.
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 Primitivelementen verwenden
Die VibrationEffect.Composition
API bietet zusätzliche Möglichkeiten für haptisches Feedback. Im Gegensatz zu Effekten gibt es für diese Primitiven jedoch keine Fallbacks auf Systemebene. Das bedeutet, dass Sie die Primitiven und anderen vom Gerät unterstützten Funktionen sorgfältig prüfen müssen.
Die Verwendung dieser APIs wird unter Benutzerdefinierte haptische Effekte erstellen ausführlicher erläutert.