Dans cette astuce rapide Android, vous apprendrez deux nouvelles méthodes pour alerter les utilisateurs des événements: vibrations et éclairage LED / Trackball. Ces méthodes sont appelées "Indicateurs matériels" et sont utilisées avec parcimonie dans diverses applications Android pour transmettre des informations urgentes ou des informations de dernière minute. Cet article est étroitement lié au SDK Android: Utilisation des alertes, des toasts et des notifications.
Les vibrations sont contrôlées par un service dédié au niveau système: le service Vibrator. Cependant, pour utiliser ce service, votre application doit demander la VIBRER l'autorisation qui doit être d'abord déclarée dans AndroidManifest.xml, comme si (ligne 5):
Tout d’abord, créez une instance de Vibrator en appelant getSystemService ():
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE);
Vous pouvez maintenant commencer à utiliser les méthodes de l'objet. Il y en a trois au total:
Vibrer pendant une durée spécifiée (en millisecondes).
Vibrer en utilisant le motif spécifié et éventuellement répéter (expliqué ci-dessous).
Annuler les vibrations actuelles.
En ce qui concerne vibrer (motif long [], répétition int): Vous devez passer un motif on-off sous forme de longue[] tableau. La première valeur indique combien de temps attendre, puis combien de temps pour vibrer, etc. le répéter Le paramètre peut être "-1" si vous ne voulez pas qu'il soit répété ou l'index du tableau de répétition auquel vous souhaitez le répéter. Si vous voulez qu'il se répète, n'oubliez pas de l'annuler éventuellement pour éviter qu'il ne se répète indéfiniment.
L'exemple ci-dessous illustre l'utilisation des deux méthodes vibrate ():
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Vibrer pendant une demi-seconde (500 millisecondes) long [] pattern = 400, 200; vibr.vibrate (motif, 0); // pause de 400 ms, vibration de 200 ms. Commencez à répéter à l'indice 0.
En règle générale, les vibrations sont associées à la réception d'un appel téléphonique ou à une autre notification système importante attendue par les utilisateurs. Les vibrations exigent l'attention des utilisateurs. Même si le téléphone de l'utilisateur est en attente ou s'il a été empoché, les vibrations sont un type de notification qui offre la meilleure garantie que les utilisateurs noteront quelque chose et voudront vérifier leur téléphone pour savoir ce qui se passe. Vous ne voulez certainement pas que les personnes occupées soient ennuyées par une alerte aléatoire toutes les quelques minutes, car elles risquent fort de finir par supprimer complètement l'application.!
Quand et comment utiliser les vibrations? La réponse simple: uniquement si cela contribue à une meilleure expérience utilisateur. Même dans ce cas, il est judicieux de proposer une sorte de panneau de paramètres permettant aux utilisateurs de désactiver son utilisation dans votre application. Un exemple d'utilisation appropriée de ce service serait une application de calendrier qui informe l'utilisateur d'un événement à venir..
En résumé, utilisez uniquement des vibrations à des fins appropriées. Ne pas en abuser et rester bref, à moins que l'application nécessite une attention immédiate.
Commencez par une instance de NotificationManager, un autre service système principal:
NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
Ensuite, construisez un nouvel objet Notification:
Notification notif = nouvelle Notification (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;
ledARGB est utilisé pour spécifier une valeur de couleur alpha, rouge, verte et bleue combinée en un seul entier. android.graphics.ColorLa méthode argb () pratique est le moyen le plus simple de le produire. Dans l'exemple ci-dessus, il crache le rouge d'intensité maximale (255 pour le rouge et 255 pour l'alpha). Vous pouvez bien entendu simplement utiliser l’une des constantes de la classe Color, telle que Color.RED..
drapeaux a le drapeau FLAG_SHOW_LIGHTS ajouté via une opération au niveau des bits. Cela indique simplement que vous souhaitez utiliser le voyant d'un périphérique dans cet objet de notification.
ledOnMS et ledOffMS: Le voyant clignotera avec ledOnMS indiquant combien de temps le voyant sera allumé et ledOffMS indiquant combien de temps il doit rester éteint entre les clignotements. Le code ci-dessous montre ceci:
// clignote LED allumée et éteinte. (Temps en millisecondes) notif.ledOnMS = 1000; notif.ledOffMS = 300; // Allume le voyant. En le réglant ainsi, une pause par défaut entre les clignotements durera environ 2 secondes. notif.ledOnMS = 1; notif.ledOffMS = 0;
Enfin, appelez notify (int id, Notification) et transmettez l'objet Notification que nous avons créé et configuré. Pour le moment, il devrait être correct de lui attribuer une valeur aléatoire en tant qu’ID, mais gardez-en une trace pour pouvoir annuler la notification ultérieurement. La meilleure méthode consiste à le stocker dans une constante plutôt que de coder en dur le nombre en tant que paramètre, mais comme il s'agit d'un didacticiel pédagogique, nous allons simplement le coder en dur à des fins de démonstration..
notifMgr.notify (1234, notif);
Maintenant, qu'est-ce que cela entraîne? Le voyant ne commence à clignoter que si votre écran est éteint et s’arrête lorsque vous le rallumez ou appelez cancel (). Voici comment le système de notification Android a été conçu. il n’existe actuellement aucun moyen de prendre le contrôle direct de l’éclairage à LED / trackball. De plus, n'oubliez pas que vous devez appeler notifMgr.cancel (1234) éventuellement - 1234 étant l'ID que vous avez spécifié précédemment. Vous pouvez configurer une minuterie pour y remédier ou vous pouvez l'invoquer lorsque votre activité reprend son focus.
Je vais arrondir ce message avec quelques mots sur la compatibilité: chaque ligne de périphérique diffère d’une manière ou d’une autre. Certains téléphones ont une boule de commande avec des capacités d'éclairage, d'autres ont une DEL et d'autres non. Le système Android fera de son mieux pour tenter de faire ce que vous lui avez dit, mais il ne peut donner aucune garantie..
Rappelez-vous toujours: Utilisez n'importe quel type d'alerte avec parcimonie et sagesse. Il est préférable de privilégier la sécurité et de ne pas utiliser de vibrations / lumières plutôt que de les utiliser à l'excès, ce qui pourrait gêner les utilisateurs, ce qui risquerait de nuire à l'expérience de l'utilisateur final. Enfin, si vous avez suivi et que vous souhaitez tester le code du didacticiel, vous devrez utiliser un véritable appareil Android, car l'émulateur ne prend en charge ni les vibrations ni les voyants. Pour l'instant, le simulateur ne montrera malheureusement pas de message "La LED clignote!" apparaitre. Peut-être que ce sera le cas à l'avenir… J'espère bien.