Enhanced og Wearable-Ready Meldinger på Android
27
Del
12
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
Innledning
Varsling er en svært nyttig måte tointeract med programmets brukere, og med Android Wear, har vi nå også bærbare enheter som kjører Android. Det er derfor en god idé å lære å dra nytte av disse nye funksjonene ved å legge til egnede tiltak for varsling eller ved å skape handlinger som kun er synlig på bærbare enheter.
I denne opplæringen, skal jeg vise deg den moderne gjennomføringen av varslinger, som vist under årets Google I /O. Vi vil bruke den nye supportpackage og forlenge itscapabilities ved å legge til handlinger som kun er synlig på smartwatches, de eneste bærbare enheter tilgjengelig med Android Wear på i skrivende stund.
1. Forutsetninger
For dette prosjektet, kan du bruke enten Android Studio eller Android Developer Tools. Hvis du bruker Android Studio, så sørg for å legge til følgende linje i din build.gradle
fil.
Kompilere "com.android.support:support-v4:20.0.+"
2. Sette opp Prosjekt
Start din IDEand opprette en ny Android-prosjektet, eller åpne et prosjekt du har opprettet tidligere. For denne opplæringen, kommer jeg til å opprette et nytt prosjekt og gi den navnet ImprovedNotifications
. Ikke glem å bruke en unik pakke.
Mens sette opp prosjektet, sørg for at du velger Tøm aktivitet
alternativ i
Opprett aktivitet trinn.
Når projectis opprettet, opprette en ny aktivitet, ActivatedActivity. Denne aktiviteten kommer til å bli kalt fra et varsel på yourmobile eller bærbar enhet.
Før vi går videre, må vi oppdatere strings.xml Det neste trinnet er å lage et oppsett for MainActivity og ActivatedActivity klasser Oppsettet for MainActivity klassen er vist nedenfor Og dette er oppsettet for ActivatedActivity klassen Vi skaper en varsling i MainActivity klassen. I kodebiten nedenfor kan du se hvilke skritt som er involvert i å skape et varsel. Jeg har kommentert koden blokken for å hjelpe deg å forstå de ulike trinnene, men la oss gå gjennom biten trinnvis Vi først instantiate på knappen som vi skal bruke til å lansere varselet. Du kan også lage varslings direkte i onCreate metoden, I det andre trinnet, instantiate vi et Intent objekt med oppgave å utføre når meldingen er avlyttet. Vi passerer objektet til en PendingIntent eksempel å håndtere det senere når det heter. Bruke Android Support Library, skaper vi varslingen bruker Builder klasse av NotificationCompat objektet og angi dets attributter. I dette trinnet instantiate vi en NotificationManagerCompat eksempel å starte og /eller stoppe varslingen når som helst vi ønsker. Dette vil gjøre testing mye enklere. Når det bankes på knappen, er meldingen sparken bruker varsle metoden. Don'tforget å bruke klassene fra Android Support Library. På denne måten kan canbe at ditt varsling skal se fint på eldre versjoner av Android. Du kan nå kjøre applikasjonen, trykk på knappen, og ser varslings vises øverst på skjermen. Hvis du trykker på varselet, bør det ta deg til ActivatedActivity aktivitet. Med varsling satt opp og fungerer, er det på tide å begynne å legge handlinger til det. Du kan legge til ekstra tiltak for å underretningen ved å starte addAction metoden på notification_builder objektet. For at dette skal fungere, må du bestå en PendingIntent eksempel med oppgaven du utfører. I det følgende kodebiten, viser jeg deg trinnene du må gjennomføre for å skape en handling med en tilpasset oppgaven. I dette eksempelet jeg kommer til å ta deg med på Twitter profilen min på Twitter app. Dette betyr at jeg trenger en URI eksempel peker på Twitter profilen min, legg dette til Intent, og la PendingIntent håndtere det når handlingen er avlyttet. Sett inn denne koden blokken før theinstantiation av notification_builder objektet. Twitter /* Handlingen i den håndholdte Meldingen må utføre en oppgave * I dette tilfellet forfatterens twitter profil kommer til å bli åpnet, i twitter app, når den blir klikket * men du kan endre det med profilen din hvis du vil;) * /Intent open_twitter_profile = new Intent (Intent.ACTION_VIEW); Uri twitter_profile_location = Uri.parse ("twitter: //user screen_name = @ kerpie"); open_twitter_profile.setData (twitter_profile_location); PendingIntent twitter_intent = PendingIntent.getActivity (dette, 0, open_twitter_profile, 0); For å legge til handlingen, påberope addAction metoden på notification_builder objektet og passere i open_twitter_profile objektet vi nettopp opprettet Kjør theapplication, trykker du på knappen for å utløse varsling, og du bør se notificationappear sammen med handlingen vi nettopp opprettet. Selv om du kan legge til flere handlinger til en melding ved hjelp av addAction metoden, må du kontrollere at brukeren ikke er overveldet av antall handlinger de kan velge fra. Anmeldelser Så langt har vi brukt klassene fra Android Support Library for å sikre at meldinger vises også på smartwatches kjører Android Wear. Du kan kjøre programmet på en fysisk Smartwatch eller du kan prøve det på emulator fra Android Virtual Device Manager. Uansett, må du synkronisere enheten med Smartwatch. Før du synkroniserer enheten med Smartwatch emulator, må du installere Android Wear app, som er tilgjengelig på Google Play. Etter at du har koblet fra alle andre Android-enhet som er koblet til datamaskinen, kjører du følgende kommando fra kommandolinjen. ADB-enheter Denne kommandoen lister opp alle de enheter som er koblet til utviklingsmaskinen . Du skal se to av dem, Smartwatch emulator og enheten. Deretter kjører du følgende kommando fra kommandolinjen for å aktivere port forwarding ADB -d forwardtcp. 5601 tcp: 5601 Du kan nå koble enheten med theemulator og slå på varslinger som bruker Android Wear app. Kjør appagain og utløse varselet. Varslingen bør ligne på det som vises nedenfor. Det er mulig å legge til handlinger som kun er synlig på wearables. Dette oppnås ved å starte addAction metoden i WearableExtender klassen. Resultatet er at enhver handling lagt gjennom NotificationCompat.Builder klassen blir ignorert. Som vi gjorde før, for å utløse handling, bruker vi en intensjonsavtale og en PendingIntent eksempel, men vi vil opprette handlingen vises på bærbare enheten ved hjelp av Builder klasse av en spesiell handling klasse, som er en del av NotificationCompat klassen som vist nedenfor. Twitter /* Her vi instantiate Intent vi ønsker å bruke når handlingen i Smartwatch trykkes * /Intent wearable_intent = new Intent (dette, ActivatedActivity.class); PendingIntent wearable_pending_intent = PendingIntent.getActivity (dette, 0, wearable_intent, PendingIntent.FLAG_UPDATE_CURRENT); /* Nå har vi en intensjon for bærbar opprettet vi må lage en bærbar handling ved hjelp det * /NotificationCompat.Action wearable_action = new NotificationCompat.Action.Builder (android.R.drawable.ic_dialog_email, getString (R.string.wearable_action), wearable_pending_intent) att bygga (); Vi AddThis handling til notification_builder objekt bruke utvide metoden som vist nedenfor Twitter /* * Her opprette varsling og begynne å legge alle attributtene * du skal bruke * /notification_builder = new NotificationCompat.Builder (denne) .setSmallIcon. (R.drawable.ic_launcher ) .setContentTitle (getString (R.string.notification_title)) .setContentText (getString (R.string.notification_text)) /* * Denne metoden angir at varsling må ha alle standard egenskapene til en varslings * som lyd og vibrasjon * /.setDefaults (Notification.DEFAULT_ALL) /* Denne metoden kommer til å avvise meldingen når den trykkes * /.setAutoCancel (true) .setContentIntent (pending_intent) /* * Her kan du legge til handlinger til den håndholdte enheten * bare ta vare på mengden av handlinger du legger * i dette tilfellet, som i mange andre, er mindre mer * /.addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent) /* * Her legger du en bærbar-bare handling * Denne handlingen vil ikke være synlig i den håndholdte enheten * /.extend (ny WearableExtender () addAction (wearable_action).); Kjør app og trykk på knappen for å vise varslings på enheten. Det bør være annerledes enn den varslingen som dukker opp på bærbar emulator. Smartwatches arehere å bo, for en stund i hvert fall, og det er derfor viktig å dra nytte av denne nye måten å kommunisere med programmets brukere. Jeg håper du har funnet den opplæringen nyttig og ikke glem å dele den hvis du likte det.
fil ved å legge strengene som vi er skal bruke litt senere i denne opplæringen
. <? xml version = "1.0" encoding = "UTF-8" >? < resources > < string name = "APP_NAME" > ImprovedNotifications < /string > < string name = "title_activity_activated" > ActivatedActivity < /string > < string name = "message" > "!" Hi I "'" m aktivert aktivitet < /string > < string name = "BUTTON_TEXT" > Prøv meg for en ny varsling < /string > < string name = "notification_title" > Hei mamma "!" I "" "ma tittelen < /string > < string name =" notification_text "> Se på meg jeg" "" "" ma sexy varsling innhold < /string > < string name = "first_action" > Let "'" s se forfatteren "'" s twitter profil < /string > < string name = "wearable_action" > jeg bare vises her < /string > < /ressurser >
3 Lage en Layout
< RelativeLayout xmlns:. android = "http://schemas.android.com /apk /RES /Android "xmlns: verktøy =" http://schemas.android.com/tools~~number=plural "Android: layout_width =" match_parent "Android: layout_height =" match_parent "verktøy: kontekst =" $ {relativePackage} $ {. activityClass} "> < Button android: id =" + id /notification_button "android: layout_height =" wrap_content "android: layout_width =" wrap_content "android: layout_centerInParent =" true "android: padding =" 10dp "android: tekst = "@ streng /BUTTON_TEXT" /> < /RelativeLayout >
< RelativeLayout xmlns:. android = "http://schemas.android.com/apk /RES /Android "xmlns: verktøy =" http://schemas.android.com/tools~~number=plural "Android: layout_width =" match_parent "android: layout_height =" match_parent "verktøy: kontekst =" $ {relativePackage} $ {activityClass}. "> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: padding = "10dp" android: layout_centerInParent = "true" android: text = "@ streng /melding" /> < /RelativeLayout > < h2> 4. Opprette en Notification
pakken com.androiheroes.improvednotifications;. Import android.app.Activity, import android.app.Notification; import android.app.PendingIntent, import android.content.Intent, import android.net.Uri, import android.os.Bundle, import android.support.v4.app.NotificationCompat, import android.support.v4.app.NotificationManagerCompat; import android.view.View, import android.widget.Button; public class MainActivity strekker Aktivitet {/* Widgets du skal bruke * /private Button; /* * Dette er varselet id * Du kan bruke den til å avvise meldingen ringe .cancel () metoden på notification_manager objektet * /private int notification_id = 1; privat endelige String NOTIFICATION_ID = "notification_id"; /* Dette er klasser du bruke til å starte varslingen * /private NotificationCompat.Builder notification_builder; private NotificationManagerCompat notification_manager; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); /* * Trinn 1 * forekomst av knappen du bruker til å starte varsling * /knapp = (Button) findViewById (R.id.notification_button); /* * Trinn 2 * Lag hensikten du skal starte når du trykker på varselet * og la PendingIntent håndtere det * /Intent open_activity_intent = new Intent (dette, ActivatedActivity.class); open_activity_intent.putExtra (NOTIFICATION_ID, notification_id); PendingIntent pending_intent = PendingIntent.getActivity (dette, 0, open_activity_intent, PendingIntent.FLAG_CANCEL_CURRENT); /* * Trinn 3 * Her opprette varsling og begynne å legge alle attributtene du skal bruke * /notification_builder = new NotificationCompat.Builder (denne) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string .notification_title)) .setContentText (getString (R.string.notification_text)) /* * Denne metoden angir at varselet må ha alle standard egenskapene til en varslings * som lyd og vibrasjon * /.setDefaults (Notification.DEFAULT_ALL) /* Denne metoden kommer til å avvise meldingen når den trykkes * /.setAutoCancel (true) .setContentIntent (pending_intent); /* * Trinn 4 * Her vi instantiate Notification Manager-objektet for å starte /stoppe varslingene * /notification_manager = NotificationManagerCompat.from (denne); }Override Beskyttet void onStart () {super.onStart (); /* * Trinn 5 * Meldingen kommer til å dukke opp når du trykker på knappen på skjermen * /button.setOnClickListener (ny View.OnClickListener () {Override public void onClick (Vis v) {notification_manager.notify (notification_id, notification_builder .bygge()); } }); }}
Trinn 1
men ved hjelp av en knapp du har mer kontroll over det eksakte tidspunktet for meldingen.
Trinn 2
Trinn 3
Trinn 4
Trinn 5
5. Legge Handlinger til Notification
/* * Her. opprette varsling og begynne å legge alle attributtene * du skal bruke * /notification_builder = new NotificationCompat.Builder (denne) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title)) .setContentText ( getString (R.string.notification_text)) /* * Denne metoden angir at varsling må ha alle standard egenskapene til en varslings * som lyd og vibrasjon * /.setDefaults (Notification.DEFAULT_ALL) /* Denne metoden kommer til å avvise varsling når det trykkes * /.setAutoCancel (true) .setContentIntent (pending_intent) /* * Her kan du legge handlingene til den håndholdte enheten * bare ta vare på mengden av handlingene du legge * i dette tilfellet, som i mange andre, less is more * /.addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent);
6. Støtte Android Wear
7. Legge Wearable-Bare Handlinger
Konklusjon