L'un des cas d'utilisation les plus basiques du retour haptique consiste à fournir des commentaires aux utilisateurs des interactions. Sélecteurs de l'heure, pression sur les touches d'un clavier virtuel et texte sont des exemples courants de bons cas d'utilisation du retour haptique. Pour plus pour savoir quand et comment utiliser le retour haptique, consultez Principes de conception haptique.
Cette page décrit trois façons de fournir un retour haptique.
- Utilisez un
View
(recommandé). Cette approche est orientée vers l’action, est compatible le plus largement et ne nécessite pas l'autorisationVIBRATE
. - Utilisez un
VibrationEffect
prédéfini. Cette approche offre plus de flexibilité, mais avec quelques compromis. - Utilisez des compositions avancées avec des primitives. Ce est plus récente et plus flexible, mais nécessite un appareil spécifique de l'assistance.
Ces méthodes utilisent des primitives définies au niveau de l'appareil pour fournir une qualité des commentaires adaptés à l'appareil en main.
Toutes les méthodes de retour haptique respectent les paramètres de retour tactile de l'utilisateur en par défaut.
Utiliser les composants View
pour générer un retour haptique
Utilisez la méthode View.performHapticFeedback
pour générer un retour haptique. La
Les constantes haptiques définies par HapticFeedbackConstants
sont axées sur leur
une fonctionnalité de l'application, et non le type d'effet haptique effectué.
L'implémentation sous-jacente peut varier en fonction de l'appareil et du matériel mais l'application ne doit tenir compte que du type de commentaires à fournir dans un contexte particulier. En vous concentrant sur la fonctionnalité, vous pouvez activer le retour haptique un feedback pour des interactions similaires. Les utilisateurs apprennent à associer différentes significations à différentes sensations haptiques au fil du temps.
Conditions préalables: Activer le retour haptique
Tant que View
est visible, le retour haptique peut être utilisé pour ses événements.
Certains événements, comme l'appui de manière prolongée, ont un retour haptique par défaut qui se déclenche si un
l'écouteur sur la vue gère l'événement (renvoie true
).
Un View
Android peut désactiver le retour haptique en définissant le
Propriété View.hapticFeedbackEnabled
sur false
. Désactiver cette propriété
entraîne un retour par défaut.
La méthode performHapticFeedback
respecte également le paramètre système
HAPTIC_FEEDBACK_ENABLED
, qui permet à l'utilisateur de potentiellement les désactiver
pour l'ensemble du système.
Contrairement aux autres API haptiques, l'utilisation de HapticFeedbackConstants
avec un View
ne nécessite pas l'autorisation VIBRATE
.
Sélectionner un HapticFeedbackConstant
Lorsque vous utilisez des composants View
avec HapticFeedbackConstants
, il n'est pas nécessaire
pour évaluer la compatibilité de certains appareils, car ces constantes auront des valeurs de remplacement
de sécurité si nécessaire. Le seul élément à prendre en compte est le niveau de SDK
constante.
Exemple 1: pressions de touche
Cet exemple montre comment ajouter un retour haptique à une saisie tactile dans View
.
à l'aide d'écouteurs tactiles. Les effets simulent la sensation d'appuyer sur une
sur le bouton, puis en le relâchant.
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; } }
Exemple 2: Bouton "Envoyer"
Les cas d'utilisation du retour haptique vont au-delà de la simulation d'une interaction physique avec
appareil. Ils peuvent également être utilisés pour transmettre une signification abstraite. Par exemple :
l'attente générale pour une
L'effet CONFIRM
est un
vibrations courtes et légères alors qu'un
REJECT
est peut-être un
en cas de défaillance du signal. Ce processus est illustré dans l'exemple
exemple pour le commentaire
d'un bouton "Envoyer".
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); } });
Utiliser un VibrationEffect
prédéfini pour générer un retour haptique
L'approche basée sur View
se concentre sur l'interaction utilisateur. Il est
pour assurer la cohérence à l'échelle du système. Toutefois, des autorisations prédéfinies spécifiques
Les API VibrationEffect
peuvent également être appelées pour le retour haptique personnalisé.
les effets.
Les effets prédéfinis sont disponibles en tant que VibrationEffect
constantes et peuvent être
ont vérifié la compatibilité et ont joué avec le service Vibrator
, comme indiqué dans le
les exemples suivants.
Comprendre la compatibilité des API VibrationEffect
avec les appareils
Dans le cas d'une utilisation de base, il n'est pas nécessaire de demander le soutien d'une personne
VibrationEffect
. Les API telles que Vibrator.areEffectsSupported
et Vibrator.areAllEffectsSupported
sont utilisés pour déterminer si l'appareil a
une implémentation personnalisée de la constante. Si aucun effet personnalisé n'est
votre application peut toujours en jouer les effets et utiliser un modèle
une implémentation de remplacement.
Pour en savoir plus, consultez la section Prédéfinis
VibrationEffect
.
Conditions préalables: chargez le vibreur et l'autorisation VIBRATE
La plupart des vibrations peuvent être émises avec le service Vibrator
, qui peut être chargé
comme suit:
Kotlin
import android.os.Vibrator val vibrator = context.getSystemService(Vibrator::class.java)
Java
import android.os.Vibrator; Vibrator vibrator = context.getSystemService(Vibrator.class);
L'application doit disposer
Autorisation VIBRATE
dans l'ordre
pour que l'appareil vibre à l'aide de ce service. L'autorisation peut être ajoutée
fichier manifeste de l'application:
<uses-permission android:name="android.permission.VIBRATE"/>
Lire un VibrationEffect
prédéfini
Les effets prédéfinis peuvent être préparés à l'aide de VibrationEffect.createPredefined
,
puis joué à l'aide de l'une des méthodes vibrate
sur Vibrator
.
Cet exemple illustre un effet de 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));
Utiliser des compositions avancées avec des primitives
L'API VibrationEffect.Composition
offre des possibilités supplémentaires pour
le retour haptique. Toutefois, contrairement aux effets, ces primitives n'ont pas
des solutions de secours au niveau du système, ce qui signifie qu'une attention particulière doit être portée
les primitives et autres fonctionnalités prises en charge par l'appareil.
L'utilisation de ces API est décrite plus en détail dans Créer des effets haptiques personnalisés :