L'un des cas d'utilisation les plus élémentaires du retour haptique consiste à fournir des commentaires aux interactions des utilisateurs. Les sélecteurs de temps, l'appui sur une touche d'un clavier virtuel et la sélection de texte sont des exemples courants de cas d'utilisation de retour haptique. Pour savoir quand et comment appliquer le retour haptique, consultez les principes de conception haptique.
Cette page décrit trois façons d'effectuer un retour haptique.
- Utilisez un
View
(recommandé). Cette approche est orientée vers l'action, offre la compatibilité la plus large et ne nécessite pas l'autorisationVIBRATE
. - Utilisez un
VibrationEffect
prédéfini. Cette approche offre plus de flexibilité, mais implique quelques compromis. - Utilisez des compositions avancées avec des primitives. Cette méthode est plus récente et encore plus flexible, mais nécessite une compatibilité d'appareil spécifique.
Ces méthodes utilisent des primitives définies au niveau de l'appareil pour fournir des commentaires de haute qualité adaptés à l'appareil en question.
Toutes les méthodes de retour haptique respectent par défaut les paramètres de retour tactile de l'utilisateur.
Utiliser les composants View
pour générer un retour haptique
Utilisez la méthode View.performHapticFeedback
pour générer un retour haptique. Les constantes haptiques définies par HapticFeedbackConstants
se concentrent sur leur fonctionnalité dans une application, et non sur le type d'effet haptique réalisé.
L'implémentation sous-jacente peut varier en fonction de l'appareil et des fonctionnalités matérielles, mais l'application ne doit prendre en compte que le type de commentaires à fournir dans un contexte particulier. En vous concentrant sur cette fonctionnalité, vous pouvez activer le retour haptique 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 le View
est visible, le retour haptique peut être utilisé pour ses événements.
Certains événements, tels que les appuis de manière prolongée, ont des retours haptiques par défaut qui sont déclenchés si un écouteur de la vue gère l'événement (renvoie true
).
Un View
Android peut désactiver le retour haptique en définissant la propriété View.hapticFeedbackEnabled
sur false
. La désactivation de cette propriété entraîne l'envoi d'un commentaire par défaut.
La méthode performHapticFeedback
respecte également le paramètre système HAPTIC_FEEDBACK_ENABLED
, qui permet à l'utilisateur de les désactiver pour l'ensemble du système.
Contrairement à d'autres API haptiques, l'utilisation de HapticFeedbackConstants
avec un View
ne nécessite pas l'autorisation VIBRATE
.
Sélectionner un(e) HapticFeedbackConstant
Lorsque vous utilisez des composants View
avec HapticFeedbackConstants
, il n'est pas nécessaire d'évaluer la compatibilité d'un appareil spécifique, car ces constantes feront l'objet d'un comportement de remplacement si nécessaire. Le seul élément à prendre en compte est le niveau de SDK de la constante souhaitée.
Exemple 1: Pression de touche
Voici un exemple d'ajout d'un retour haptique à une entrée tactile dans View
à l'aide d'écouteurs tactiles. Les effets simulent le sentiment d'appuyer sur un bouton, puis de le relâcher.
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 l'appareil. Ils peuvent également être utilisés pour transmettre une signification abstraite. Par exemple, l'attente générale pour un effet CONFIRM
est une vibration courte et légère, tandis qu'un REJECT
peut fournir un retour plus important pour signaler une défaillance. Ceci est illustré dans l'exemple suivant, qui représente un commentaire sur le 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 recommandé pour assurer la cohérence au sein du système. Cependant, des API VibrationEffect
prédéfinies spécifiques peuvent également être appelées pour des effets de retour haptique personnalisés.
Les effets prédéfinis sont disponibles en tant que constantes VibrationEffect
. Vous pouvez vérifier leur compatibilité et les utiliser avec le service Vibrator
, comme illustré dans les exemples suivants.
Comprendre la compatibilité des appareils avec les API VibrationEffect
En utilisation de base, il ne devrait pas être nécessaire de vérifier la prise en charge des API VibrationEffect
individuelles. Les API telles que Vibrator.areEffectsSupported
et Vibrator.areAllEffectsSupported
permettent de déterminer si l'appareil dispose d'une implémentation personnalisée de la constante. Si aucun effet personnalisé n'est présent, votre application peut toujours les diffuser et utiliser une implémentation de remplacement définie par la plate-forme.
Pour en savoir plus, consultez la section VibrationEffect
prédéfinis.
Conditions préalables: charger le vibreur et l'autorisation VIBRATE
La plupart des vibrations peuvent être lues 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 de l'autorisation VIBRATE
pour faire vibrer l'appareil en utilisant ce service. L'autorisation peut être ajoutée au 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 lus à l'aide de l'une des méthodes vibrate
sur Vibrator
.
Cet exemple a un effet 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 de retour haptique. Toutefois, contrairement aux effets, ces primitives ne disposent pas de solutions de secours au niveau du système, ce qui signifie qu'une attention particulière doit être portée aux primitives et aux autres fonctionnalités compatibles avec l'appareil.
L'utilisation de ces API est abordée plus en détail dans la section Créer des effets haptiques personnalisés.