Notificări îmbunătățite și compatibile cu consumabilele pe Android

Introducere

Notificările reprezintă o modalitate foarte utilă de a interacționa cu utilizatorii aplicației dvs. și, cu Android Wear, acum avem și dispozitive care pot fi purtate cu Android. Prin urmare, este o idee bună să învățați cum să profitați de aceste noi caracteristici prin adăugarea de acțiuni adecvate la notificări sau prin crearea de acțiuni care sunt vizibile numai pe dispozitive care pot fi purtate.

În acest tutorial, vă voi arăta implementarea modernă a notificărilor, așa cum sa arătat în cadrul I / O din acest an Google. Vom folosi noul pachet de suport și vom extinde capabilitățile acestuia prin adăugarea de acțiuni care sunt vizibile numai pe smartwatch-uri, singurele dispozitive care pot fi purtate cu Android Wear în momentul redactării.

1. Condiții preliminare

Pentru acest proiect, puteți utiliza fie Android Studio, fie Instrumentele pentru dezvoltatori Android. Dacă utilizați Android Studio, asigurați-vă că adăugați următoarea linie la dvs. build.gradle fişier.

compilați "com.android.support:support-v4:20.0.+"

2. Configurarea proiectului

Lansați IDE-ul și creați un nou proiect Android sau deschideți un proiect pe care l-ați creat anterior. Pentru acest tutorial, voi crea un nou proiect și îl voi numi ImprovedNotifications. Nu uitați să utilizați un nume de pachet unic.

În timpul configurării proiectului, asigurați-vă că selectați Activitate goală opțiune în Creați activitate Etapa.

Odată ce proiectul este creat, creați o nouă activitate, ActivatedActivity. Această activitate va fi apelată de la o notificare pe dispozitivul dvs. mobil sau purtător.

Înainte de a merge mai departe, trebuie să actualizăm strings.xml fișier prin adăugarea șirurilor pe care vom folosi un pic mai târziu în acest tutorial.

  ImprovedNotifications ActivatedActivity Bună"!" Activitatea activată Încercați-mă pentru o nouă notificare Buna mama"!" Am un titlu Uita-te la mine"!" Am un conținut de notificare sexy Să vedem "" profilul autorului "" Twitter Am venit doar aici 

3. Crearea layout-ului

Următorul pas este să creați un aspect pentru Activitate principala si ActivatedActivity clase. Aspectul pentru Activitate principala clasa este prezentată mai jos.

 

Și acesta este aspectul pentru ActivatedActivity clasă.

  

4. Crearea unei notificări

Creați o notificare în Activitate principala clasă. În fragmentul de cod de mai jos, puteți vedea ce pași sunt implicați în crearea unei notificări. Am comentat blocul de coduri pentru a vă ajuta să înțelegeți pașii diferiți, dar hai să mergem prin pasul pas cu pas.

pachet com.androiheroes.improvednotifications; importă android.app.Activity; import android.app.Notification; import șiroid.app.PendingIntent; import șiroid.content.Intent; importul android.net.Uri; import android.os.Bundle; importați android.support.v4.app.NotificationCompat; import șiroid.support.v4.app.NotificationManagerCompat; import șiroid.view.View; import șiroid.widget.Button; clasa publica MainActivity extinde Activitatea / * Widgeturi pe care o vei folosi * / butonul privat Buton; / * * Acesta este ID-ul de notificare * Puteți să-l utilizați pentru a elimina notificarea apelând metoda .cancel () pe obiectul notification_manager * / private int notification_id = 1; finală privată finală NOTIFICATION_ID = "notification_id"; / * Acestea sunt clasele pe care le utilizați pentru a porni notificarea * / privat NotificareCompat.Builder notification_builder; privat NotificationManagerCompat notification_manager; @Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); / * * Pasul 1 * Instanțierea butonului utilizat pentru a porni notificarea * / button = (butonul) findViewById (R.id.notification_button); / * * Pasul 2 * Creați intenția pe care o veți lansa atunci când notificarea dvs. este apăsată * și lăsați PendingIntent să o manipuleze * / Intenție open_activity_intent = Intenție nouă (aceasta, ActivatedActivity.class); open_activity_intent.putExtra (NOTIFICATION_ID, notification_id); PendingIntent pending_intent = PendingIntent.getActivity (aceasta, 0, open_activity_intent, PendingIntent.FLAG_CANCEL_CURRENT); / * * Pasul 3 * Aici creați notificarea și începeți să adăugați toate atributele pe care urmează să le utilizați * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string *. * Această metodă specifică faptul că notificarea noastră trebuie să aibă toate caracteristicile implicite ale unei notificări * cum ar fi sunetul și vibrațiile * / .setDefaults (Notification.DEFAULT_ALL) / * Această metodă va renunța la notificare odată ce aceasta este apăsată * / .setAutoCancel (true) .setContentIntent (pending_intent); / * * Pasul 4 * Aici instanțiăm obiectul Manager de notificare pentru a porni / opri notificările * / notification_manager = NotificationManagerCompat.from (this);  @Override protejate void onStart () super.onStart (); / * * Pasul 5 * Notificarea va apărea când apăsați butonul de pe ecran * / button.setOnClickListener (nou View.OnClickListener () @Override public void onClick (Vizualizare v) notification_manager.notify (notification_id, notification_builder .construi());  ); 

Pasul 1

Inițializăm mai întâi butonul pe care îl vom folosi pentru a lansa notificarea. De asemenea, puteți crea notificarea direct în onCreate metodă,dar folosind un buton aveți mai mult control asupra timpului precis al notificării.

Pasul 2

În al doilea pas, instanțiăm un scop obiect cu sarcina de a efectua atunci când notificarea este lovit. Trecem obiectul la a PendingIntent de exemplu, să se ocupe mai târziu când se numește.

Pasul 3

Utilizând Biblioteca de asistență Android, creăm notificarea folosind Constructor clasa a NotificationCompat obiect și să-i stabilească atributele.

Pasul 4

În acest pas, instanțiăm a NotificationManagerCompat exemplu pentru a porni și / sau opri notificarea oricând dorim. Acest lucru va face mult mai ușor de testare.

Pasul 5

Atunci când butonul este apăsat, notificarea este declanșată utilizând notifica metodă.

Nu uitați să utilizați clasele din Biblioteca de suport Android. În acest fel, puteți fi sigur că notificarea dvs. va arăta bine în versiunile mai vechi de Android.

Acum puteți rula aplicația, atingeți butonul și vedeți notificarea care apare în partea de sus a ecranului. Dacă atingeți notificarea, trebuie să vă ducă la ActivatedActivity activitate. Odată cu notificarea înființată și care funcționează, este timpul să începeți să adăugați acțiuni la aceasta.

5. Adăugarea de acțiuni la notificare

Puteți adăuga acțiuni suplimentare la notificare invocând addAction metoda pe notification_builder obiect. Pentru ca acest lucru să funcționeze, trebuie să treci a PendingIntent exemplu cu sarcina pe care doriți să o îndepliniți.

În următorul fragment de cod, vă arăt pașii pe care trebuie să îi implementați pentru a crea o acțiune cu o sarcină particularizată. În acest exemplu, vă voi duce la profilul meu Twitter din aplicația Twitter. Asta înseamnă că am nevoie de a URI instanță care indică profilul meu de Twitter, adăugați acest lucru la scop, și lăsați-o PendingIntent manevrați-l când se atinge acțiunea. Introduceți acest bloc de cod înaintea instanțiării notification_builder obiect.

 / * Actiunea in notificarea handheld trebuie sa efectueze o anumita sarcina * In acest caz, profilul twitter al autorului va fi deschis, in aplicatia twitter, atunci cand se face click pe *, dar poti sa-l schimbi cu profilul tau daca vrei; / Intenție open_twitter_profile = Intent (Intent.ACTION_VIEW); Uri twitter_profile_location = Uri.parse ("twitter: // utilizator? Ecran_name = @ kerpie"); open_twitter_profile.setData (twitter_profile_location); PendingIntent twitter_intent = PendingIntent.getActivity (aceasta, 0, open_twitter_profile, 0);

Pentru a adăuga acțiunea, invocați addAction metoda pe notification_builder obiect și trece în open_twitter_profile obiect pe care l-am creat.

/ * * Aici creați notificarea și începeți să adăugați toate atributele * pe care urmează să le utilizați * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Această metodă specifică faptul că notificarea dvs. trebuie să aibă toate caracteristicile implicite ale unei notificări * precum sunetul și vibrațiile * / .setDefaults (Notification.DEFAULT_ALL) / * Această metodă va renunța la notificare odată ce este apăsată * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Aici puteți adăuga acțiuni în dispozitivul dvs. portabil * pur și simplu să aveți grijă de cantitatea de acțiuni pe care le adăugați * în acest caz, ca în multe altele, mai puțin este mai mult * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent);

Rulați aplicația, atingeți butonul pentru a declanșa notificarea și ar trebui să vedeți faptul că notificarea apare împreună cu acțiunea pe care tocmai am creat-o.

În timp ce puteți adăuga mai multe acțiuni la o notificare utilizând addAction , asigurați-vă că utilizatorul nu este copleșit de numărul de acțiuni pe care le poate alege.

6. Susținerea Android Wear

Până acum, am folosit clasele din Biblioteca de suport Android pentru a vă asigura că notificările sunt afișate și pe smartwatch-uri care rulează Android Wear. Puteți rula aplicația pe un smartwatch fizic sau îl puteți încerca pe emulator din Managerul Virtual Device Android. În orice caz, trebuie să sincronizați dispozitivul cu smartwatch-ul.

Înainte de a vă sincroniza dispozitivul cu emulatorul smartwatch, trebuie să instalați aplicația Android Wear, disponibilă pe Google Play. După ce ați deconectat toate celelalte dispozitive Android conectate la computer, executați următoarea comandă din linia de comandă.

dispozitive adb

Această comandă enumeră dispozitivele conectate la mașina dvs. de dezvoltare. Ar trebui să vedeți două dintre ele, emulatorul smartwatch și dispozitivul dvs. Apoi rulați următoarea comandă din linia de comandă pentru a permite redirecționarea portului.

adb -d forward tcp: 5601 tcp: 5601

Acum puteți conecta dispozitivul la emulator și puteți activa notificările utilizând aplicația Android Wear. Rulați din nou aplicația și declanșează notificarea. Notificarea trebuie să pară similară celei de mai jos.

7. Adăugarea de acțiuni numai la purtare

Este posibil să adăugați acțiuni care sunt vizibile numai pe purtători. Acest lucru se realizează invocând addAction metodă a WearableExtender clasă. Rezultatul este că toate acțiunile adăugate prin NotificationCompat.Builder clasa sunt ignorate.

Așa cum am făcut înainte, pentru a declanșa acțiunea, vom face uz de o acțiune scop și a PendingIntent dar vom crea acțiunea afișată pe dispozitivul care poate fi purtat utilizând Constructor clasa de un speciale Acțiune clasa, care face parte din NotificationCompat clasa, după cum se arată mai jos.

/ * Aici instanțiăm intenția pe care dorim să o folosim atunci când acțiunea din smartwatch este apăsată * / Intent wearable_intent = new Intent (acest lucru, ActivatedActivity.class); PendingIntent wearable_pending_intent = PendingIntent.getActivity (aceasta, 0, wearable_intent, PendingIntent.FLAG_UPDATE_CURRENT); / * Acum avem o intentie pentru crearea de portabile trebuie sa cream o actiune care poate fi purtata cu ea * / NotificareCompat.Action wearable_action = new NotificareCompat.Action.Builder (android.R.drawable.ic_dialog_email, getString (R.string.wearable_action) , wearable_pending_intent) .build ();

Apoi adăugăm această acțiune la notification_builder obiect folosind extinde așa cum se arată mai jos.

/ * * Aici creați notificarea și începeți să adăugați toate atributele * pe care urmează să le utilizați * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Această metodă specifică faptul că notificarea dvs. trebuie să aibă toate caracteristicile implicite ale unei notificări * precum sunetul și vibrațiile * / .setDefaults (Notification.DEFAULT_ALL) / * Această metodă va renunța la notificare odată ce este apăsată * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Aici puteți adăuga acțiuni în dispozitivul dvs. portabil * pur și simplu să aveți grijă de cantitatea de acțiuni pe care le adăugați * în acest caz, ca in multe altele, mai putin este mai mult * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent) / * * Aici adaugati o actiune purta doar * Aceasta actiune nu va fi vizibil în dispozitivul portabil * / .extend (noul WearableExtender ( ) .AddAction (wearable_action));

Rulați aplicația și atingeți butonul pentru a afișa notificarea pe dispozitiv. Ar trebui să fie diferită de notificarea care apare pe emulatorul purtător.

Concluzie

Smartwatches sunt aici pentru a rămâne, pentru cel puțin o vreme, și este, prin urmare, important să profitați de această nouă modalitate de comunicare cu utilizatorii aplicației. Sper că ați găsit tutorialul utile și nu uitați să îl distribuiți dacă v-ați plăcut.


Cod