Notifications améliorées et prêtes à porter sur Android

introduction

Les notifications sont un moyen très utile pour interagir avec les utilisateurs de votre application et, avec Android Wear, nous disposons également d'appareils portables exécutant Android. C'est donc une bonne idée d'apprendre à tirer parti de ces nouvelles fonctionnalités en ajoutant des actions appropriées aux notifications ou en créant des actions uniquement visibles sur des périphériques portables..

Dans ce didacticiel, je vais vous montrer l'implémentation moderne des notifications, illustrée par Google I / O de cette année. Nous utiliserons le nouveau package de support et étendrons ses fonctionnalités en ajoutant des actions uniquement visibles sur les smartwatches, les seuls périphériques portables disponibles avec Android Wear au moment de la rédaction..

1. Prérequis

Pour ce projet, vous pouvez utiliser Android Studio ou les outils de développement Android. Si vous utilisez Android Studio, assurez-vous d’ajouter la ligne suivante à votre build.gradle fichier.

compiler "com.android.support:support-v4:20.0.+"

2. Mise en place du projet

Lancez votre IDE et créez un nouveau projet Android ou ouvrez un projet que vous avez créé précédemment. Pour ce tutoriel, je vais créer un nouveau projet et le nommer Notes améliorées. N'oubliez pas d'utiliser un nom de package unique.

Lors de la configuration du projet, assurez-vous de sélectionner le Activité vide option dans le Créer une activité étape.

Une fois le projet créé, créez une nouvelle activité., ActivéActivité. Cette activité sera appelée à partir d'une notification sur votre appareil mobile ou portable.

Avant de poursuivre, nous devons mettre à jour le strings.xml fichier en ajoutant les chaînes que nous allons utiliser un peu plus tard dans ce tutoriel.

  Notes améliorées ActivéActivité Salut"!" Je suis l'activité activée Essayez-moi pour une nouvelle notification Salut maman"!" Je "'" "m un titre Regarde moi"!" Je "'" m un contenu de notification sexy Laissons "'" voir l'auteur "'" s profil twitter Je n'apparais que ici 

3. Créer la mise en page

L’étape suivante consiste à créer une mise en page pour le Activité principale et le ActivéActivité Des classes. La mise en page pour le Activité principale la classe est montrée ci-dessous.

 

Et c'est la mise en page pour la ActivéActivité classe.

  

4. Créer une notification

Nous créons une notification dans le Activité principale classe. Dans l'extrait de code ci-dessous, vous pouvez voir les étapes nécessaires à la création d'une notification. J'ai commenté le bloc de code pour vous aider à comprendre les différentes étapes, mais parcourons pas à pas l'extrait de code.

paquet com.androiheroes.improvednotifications; importer android.app.Activity; importer android.app.Notification; importer android.app.PendingIntent; importer android.content.Intent; importer android.net.Uri; importer android.os.Bundle; importer android.support.v4.app.NotificationCompat; importer android.support.v4.app.NotificationManagerCompat; importer android.view.View; importer android.widget.Button; Classe publique MainActivity étend l'activité / * Widgets que vous allez utiliser * / private Button button; / * * Ceci est l'id de notification * Vous pouvez l'utiliser pour ignorer la notification appelant la méthode .cancel () sur l'objet notification_manager * / private int notification_id = 1; private final String NOTIFICATION_ID = "notification_id"; / * Ce sont les classes que vous utilisez pour démarrer la notification * / private NotificationCompat.Builder notification_builder; private NotificationManagerCompat notification_manager; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); / * * Étape 1 * Instanciation du bouton utilisé pour lancer la notification * / button = (Bouton) findViewById (R.id.notification_button); / * * Étape 2 * Créez l'intention que vous allez lancer lorsque vous appuyez sur la notification * et laissez PendingIntent s'en charger * / Intent open_activity_intent = new Intent (this, ActivatedActivity.class); open_activity_intent.putExtra (NOTIFICATION_ID, notification_id); PendingIntent waiting_intent = PendingIntent.getActivity (this, 0, open_activity_intent, PendingIntent.FLAG_CANCEL_CURRENT); / * * Étape 3 * Vous créez ici la notification et commencez à ajouter tous les attributs que vous allez utiliser * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string .notification_title)) .setContentText (getString (R.string.notification_text)) / * * Cette méthode indique que notre notification doit avoir toutes les caractéristiques par défaut d'une notification * comme son et vibrations * / .setDefaults (Notification.DEFAULT_ALL) / * Cette méthode va rejeter la notification une fois appuyée * / .setAutoCancel (true) .setContentIntent (waiting_intent); / * * Étape 4 * Nous instancions ici l'objet Gestionnaire de notifications pour démarrer / arrêter les notifications * / notification_manager = NotificationManagerCompat.from (this);  @Override protected void onStart () super.onStart (); / * * Étape 5 * La notification va apparaître lorsque vous appuyez sur le bouton à l'écran * / button.setOnClickListener (new View.OnClickListener () @Override public void onClick (View v) notification_manager.notify (notification_id, notification_builder .construire());  ); 

Étape 1

Nous instancions d’abord le bouton que nous utiliserons pour lancer la notification. Vous pouvez également créer la notification directement dans le onCreate méthode,mais en utilisant un bouton, vous avez plus de contrôle sur le moment exact de la notification.

Étape 2

Dans la deuxième étape, nous instancions un Intention objet avec la tâche à exécuter lorsque la notification est exploitée. Nous passons l'objet à un En attente d'intention par exemple pour le gérer plus tard, quand il s'appelle.

Étape 3

À l'aide de la bibliothèque de support Android, nous créons la notification à l'aide du Constructeur classe de la NotificationCompat objet et définir ses attributs.

Étape 4

Dans cette étape, nous instancions un NotificationManagerCompat exemple pour démarrer et / ou arrêter la notification à tout moment. Cela rendra les tests beaucoup plus faciles.

Étape 5

Lorsque vous appuyez sur le bouton, la notification est déclenchée à l'aide du bouton notifier méthode.

N'oubliez pas d'utiliser les classes de la bibliothèque de support Android. De cette façon, vous pouvez être sûr que votre notification ira bien sur les anciennes versions d'Android.

Vous pouvez maintenant exécuter l'application, appuyez sur le bouton et voir la notification apparaître en haut de l'écran. Si vous appuyez sur la notification, vous devriez aller à la ActivéActivité activité. Avec la notification configurée et opérationnelle, il est temps de lui ajouter des actions..

5. Ajouter des actions à la notification

Vous pouvez ajouter des actions supplémentaires à la notification en appelant le addAction méthode sur le notification_builder objet. Pour que cela fonctionne, vous devez passer un En attente d'intention par exemple avec la tâche que vous aimez effectuer.

Dans l'extrait de code suivant, je vous montre les étapes à suivre pour créer une action avec une tâche personnalisée. Dans cet exemple, je vais vous emmener sur mon profil Twitter dans l'application Twitter. Cela signifie que j'ai besoin d'un URI par exemple en pointant sur mon profil Twitter, ajoutez ceci à la Intention, et laisser le En attente d'intention gérez-le lorsque l'action est engagée. Insérer ce bloc de code avant l’instanciation du notification_builder objet.

 / * L'action dans la notification du terminal mobile doit exécuter une tâche * Dans ce cas, le profil Twitter de l'auteur va être ouvert, dans l'application Twitter, lorsque vous cliquez dessus * mais vous pouvez le modifier avec votre profil si vous le souhaitez;) * / Intent open_twitter_profile = new Intent (Intent.ACTION_VIEW); Uri twitter_profile_location = Uri.parse ("twitter: // utilisateur? Nom_écran = @ kerpie"); open_twitter_profile.setData (twitter_profile_location); PendingIntent twitter_intent = PendingIntent.getActivity (this, 0, open_twitter_profile, 0);

Pour ajouter l'action, appelez le addAction méthode sur le notification_builder objet et passe dans le open_twitter_profile objet que nous venons de créer.

/ * * Vous créez ici la notification et commencez à ajouter tous les attributs * que vous allez utiliser * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Cette méthode indique que votre notification doit avoir toutes les caractéristiques par défaut d'une notification * comme le son et la vibration * / .setDefaults (Notification.DEFAULT_ALL) / * Cette méthode va rejeter la notification une fois appuyée * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Vous pouvez ajouter ici des actions à votre périphérique de poche *, prenez simplement en compte le nombre d'actions que vous ajoutez * dans ce cas, comme dans beaucoup d'autres, moins c'est plus * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent);

Exécutez l'application, appuyez sur le bouton pour déclencher la notification. La notification devrait s'afficher avec l'action que nous venons de créer..

Vous pouvez ajouter d’autres actions à une notification à l’aide de la touche addAction méthode, assurez-vous que l'utilisateur n'est pas submergé par le nombre d'actions qu'il peut choisir.

6. Soutenir Android Wear

Jusqu'à présent, nous avons utilisé les classes de la bibliothèque de support Android pour nous assurer que les notifications sont également affichées sur les smartwatches fonctionnant sous Android Wear. Vous pouvez exécuter l'application sur une smartwatch physique ou l'essayer sur l'émulateur à partir d'Android Virtual Device Manager. Quoi qu'il en soit, vous devez synchroniser votre appareil avec la smartwatch..

Avant de synchroniser votre appareil avec l'émulateur smartwatch, vous devez installer l'application Android Wear, disponible sur Google Play. Après avoir débranché tous les autres appareils Android connectés à votre ordinateur, exécutez la commande suivante à partir de la ligne de commande..

périphériques adb

Cette commande répertorie les périphériques connectés à votre ordinateur de développement. Vous devriez en voir deux, l'émulateur SmartWatch et votre appareil. Ensuite, exécutez la commande suivante à partir de la ligne de commande pour activer le transfert de port..

adb -d avant tcp: 5601 tcp: 5601

Vous pouvez maintenant connecter votre appareil à l'émulateur et activer les notifications à l'aide de l'application Android Wear. Exécutez à nouveau l'application et déclenchez la notification. La notification doit ressembler à celle indiquée ci-dessous.

7. Ajout d'actions Wearable-Only

Il est possible d’ajouter des actions qui ne sont visibles que sur les ordinateurs portables. Ceci est accompli en invoquant le addAction méthode du WearableExtender classe. Le résultat est que toutes les actions ajoutées via le NotificationCompat.Builder la classe est ignorée.

Comme auparavant, pour déclencher l'action, nous utilisons un Intention et un En attente d'intention exemple, mais nous allons créer l’action affichée sur le dispositif portable à l’aide du bouton Constructeur classe d'une spéciale action classe, qui fait partie de la NotificationCompat classe comme ci-dessous.

/ * Nous instancions ici l'intention que nous souhaitons utiliser lorsque l'action dans le smartwatch est appuyée * / Intention wearable_intent = new Intent (this, ActivatedActivity.class); PendingIntent wearable_pending_intent = PendingIntent.getActivity (this, 0, wearable_intent, PendingIntent.FLAG_UPDATE_CURRENT); / * Maintenant que nous avons l'intention d'utiliser le portable créé, nous devons créer une action portable en l'utilisant * / NotificationCompat.Action wearable_action = new NotificationCompat.Action.Builder (android.R.drawable.ic_dialog_email, getString (R.string.wearable_action) , wearable_pending_intent) .build ();

Nous ajoutons ensuite cette action au notification_builder objet en utilisant le étendre méthode comme indiqué ci-dessous.

/ * * Vous créez ici la notification et commencez à ajouter tous les attributs * que vous allez utiliser * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Cette méthode indique que votre notification doit avoir toutes les caractéristiques par défaut d'une notification * comme le son et la vibration * / .setDefaults (Notification.DEFAULT_ALL) / * Cette méthode va rejeter la notification une fois appuyée * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Vous pouvez ajouter ici des actions à votre périphérique de poche *, prenez simplement en compte le nombre d'actions que vous ajoutez * dans ce cas, comme dans beaucoup d'autres, moins c'est plus * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent) / * * Vous ajoutez ici une action uniquement portable * Cette action ne sera pas visible dans le périphérique de poche * / .extend (nouveau WearableExtender ( ) .addAction (wearable_action));

Exécutez l'application et appuyez sur le bouton pour afficher la notification sur votre appareil. Il devrait être différent de la notification qui apparaît sur l'émulateur portable.

Conclusion

Les montres intelligentes sont là pour rester, au moins pour un temps, et il est donc important de tirer parti de cette nouvelle façon de communiquer avec les utilisateurs de votre application. J'espère que vous avez trouvé le tutoriel utile et n'oubliez pas de le partager si vous l'avez aimé..