Aggiungere feedback aptico agli eventi

Uno dei casi d'uso più basilari per la tecnologia aptica è quello di fornire feedback all'utente e interazioni. Selettori dell'ora, la pressione del tasto su una tastiera virtuale e il testo sono esempi comuni di buoni casi d'uso per il feedback aptico. Per ulteriori informazioni informazioni su quando e come applicare la tecnologia aptica, leggi Principi di progettazione con tecnologia aptica.

In questa pagina vengono descritti tre modi per fornire feedback aptico.

Questi metodi utilizzano le primitive definite a livello di dispositivo per fornire alta qualità e feedback personalizzati in base al dispositivo.

Tutti i metodi di feedback aptico rispettano le impostazioni del feedback al tocco dell'utente: predefinito.

Utilizza i componenti View per generare feedback aptico

Utilizza il metodo View.performHapticFeedback per generare feedback aptico. La le costanti aptiche definite dal parametro HapticFeedbackConstants si concentrano sulle relative la funzionalità di sicurezza in un'applicazione, non il tipo di effetto aptico eseguito.

L'implementazione di base potrebbe variare a seconda del dispositivo e dell'hardware ma l'app deve solo considerare il tipo di feedback da fornire in un determinato contesto. Concentrandoti sulla funzionalità, puoi attivare la tecnologia aptica feedback per interazioni simili. Gli utenti imparano ad associare significati diversi a diverse sensazioni aptiche nel tempo.

Prerequisiti: attiva il feedback aptico

Finché l'elemento View è visibile, è possibile utilizzare il feedback aptico per i suoi eventi. Alcuni eventi, come la pressione prolungata, hanno la tecnologia aptica predefinita che viene attivata se un listener nella vista gestisce l'evento (restituisce true).

Un View Android può disattivare il feedback aptico impostando il View.hapticFeedbackEnabled a false. Disattivazione di questa proprietà genera un feedback predefinito.

Il metodo performHapticFeedback rispetta anche l'impostazione di sistema HAPTIC_FEEDBACK_ENABLED, che consente all'utente di disattivarli potenzialmente per l'intero sistema.

A differenza delle altre API aptica, l'uso di HapticFeedbackConstants con un View non richiede l'autorizzazione VIBRATE.

Scegli un HapticFeedbackConstant

Quando utilizzi i componenti View con HapticFeedbackConstants, non è necessario per valutare il supporto specifico del dispositivo, in quanto queste costanti hanno comportamento dell'utente, se necessario. L'unica considerazione è il livello di SDK costante.

Esempio 1: pressione di un tasto

Questo è un esempio di come aggiungere un feedback aptico a un input tocco in View tramite listener tattili. Gli effetti simulano la sensazione di premere e rilasciarlo.

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;
  }
}

Esempio 2: pulsante Invia

I casi d'uso del feedback aptico vanno oltre la simulazione di un'interazione fisica con dispositivo. Potrebbero essere usati anche per trasmettere un significato astratto. Ad esempio: l'aspettativa generale L'effetto CONFIRM è un una vibrazione breve e leggera durante REJECT potrebbe essere un un feedback più forte per segnalare i guasti. come illustrato di seguito per un feedback sul pulsante Invia.

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);
  }
});

Utilizza un valore VibrationEffect predefinito per generare feedback aptico

L'utilizzo dell'approccio basato su View si concentra sull'interazione dell'utente. È per la coerenza in tutto il sistema. Tuttavia, determinati valori predefiniti Le API di VibrationEffect possono essere richiamate anche per un feedback aptico personalizzato e gli effetti sonori.

Gli effetti predefiniti sono disponibili come VibrationEffect costante e può essere ha cercato assistenza e ha usato il servizio Vibrator come mostrato i seguenti esempi.

Comprendi il supporto dei dispositivi delle API di VibrationEffect

Nell'utilizzo di base, non dovrebbe essere necessario verificare il supporto dei singoli utenti VibrationEffect API. Le API come Vibrator.areEffectsSupported e Vibrator.areAllEffectsSupported vengono utilizzati per determinare se il dispositivo ha un'implementazione personalizzata della costante. Se un effetto personalizzato non presente, la tua app può comunque riprodurre gli effetti e usare un modello un'implementazione di riserva.

Per maggiori dettagli, consulta la sezione Predefinito VibrationEffect.

Prerequisiti: carica l'autorizzazione Vibrator e VIBRATE

La maggior parte delle vibrazioni può essere riprodotta con il servizio Vibrator, che è possibile caricare come segue:

Kotlin

import android.os.Vibrator

val vibrator = context.getSystemService(Vibrator::class.java)

Java

import android.os.Vibrator;

Vibrator vibrator = context.getSystemService(Vibrator.class);

L'app deve avere Autorizzazione VIBRATE in ordine per far vibrare il dispositivo usando questo servizio. L'autorizzazione può essere aggiunta al file manifest dell'applicazione:

<uses-permission android:name="android.permission.VIBRATE"/>

Riproduci VibrationEffect predefinito

Gli effetti predefiniti possono essere preparati utilizzando VibrationEffect.createPredefined, poi giocato con uno dei vibrate metodi su Vibrator.

Questo esempio riproduce un effetto Clic.

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));

Utilizzare composizioni avanzate con i primitivi

L'API VibrationEffect.Composition offre ulteriori possibilità per con feedback aptico. Tuttavia, a differenza degli effetti, queste primitive non hanno a livello di sistema, il che significa che occorre prestare particolare attenzione le primitive e altre funzionalità supportate dal dispositivo.

L'utilizzo di queste API è discusso più in dettaglio nella Creazione di effetti aptici personalizzati.