Haptisches Feedback zu Terminen hinzufügen

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.

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.