Verbeterde en wearable-ready meldingen op Android

Invoering

Meldingen zijn een zeer nuttige manier om te communiceren met de gebruikers van uw toepassing en met Android Wear hebben we nu ook draagbare apparaten met Android. Het is daarom een ​​goed idee om te leren hoe u van deze nieuwe functies kunt profiteren door passende acties toe te voegen aan meldingen of door acties te maken die alleen zichtbaar zijn op draagbare apparaten.

In deze zelfstudie laat ik je de moderne implementatie van meldingen zien, zoals te zien tijdens de Google I / O van dit jaar. We zullen het nieuwe ondersteuningspakket gebruiken en de mogelijkheden uitbreiden door acties toe te voegen die alleen zichtbaar zijn op smartwatches, de enige draagbare apparaten die op het moment van schrijven beschikbaar zijn met Android Wear.

1. Vereisten

Voor dit project kunt u Android Studio of de Android Developer Tools gebruiken. Als u Android Studio gebruikt, zorg er dan voor dat u de volgende regel toevoegt aan uw build.gradle het dossier.

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

2. Het opzetten van het project

Start uw IDE en maak een nieuw Android-project of open een project dat u eerder hebt gemaakt. Voor deze zelfstudie ga ik een nieuw project maken en een naam geven ImprovedNotifications. Vergeet niet om een ​​unieke pakketnaam te gebruiken.

Zorg er tijdens het opzetten van het project voor dat u de Lege activiteit optie in de Activiteit maken stap.

Nadat het project is gemaakt, maakt u een nieuwe activiteit, ActivatedActivity. Deze activiteit wordt gebeld via een melding op uw mobiele of draagbare apparaat.

Voordat we verder gaan, moeten we het strings.xml bestand door de tekenreeksen toe te voegen die we later in deze zelfstudie gaan gebruiken.

  ImprovedNotifications ActivatedActivity Hoi"!" Ik "" "m de geactiveerde activiteit Probeer mij voor een nieuwe melding Hé mama "!" Ik "" "" ben een titel Kijk me aan"!" Ik heb een sexy berichtinhoud Laat '' "s het twitterprofiel van de auteur zien." Ik kom hier alleen 

3. De lay-out maken

De volgende stap is het maken van een lay-out voor de Hoofdactiviteit en de ActivatedActivity klassen. De lay-out voor de Hoofdactiviteit klasse wordt hieronder getoond.

 

En dit is de lay-out voor de ActivatedActivity klasse.

  

4. Een melding maken

We maken een melding in de Hoofdactiviteit klasse. In het onderstaande codefragment kunt u zien welke stappen nodig zijn om een ​​melding te maken. Ik heb het codeblok beoordeeld om u te helpen de verschillende stappen te begrijpen, maar laten we het fragment stap voor stap doorlopen.

pakket com.androiheroes.improvednotifications; import android.app.Activity; importeer android.app.Notification; importeer android.app.PendingIntent; importeer android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.NotificationCompat; importeer android.support.v4.app.NotificationManagerCompat; import android.view.View; importeer android.widget.Button; public class MainActivity breidt Activiteit uit / * Widgets die u gaat gebruiken * / private Button-knop; / * * Dit is de notificatie-ID * U kunt deze gebruiken om de notificatie te negeren waarbij de .cancel () -methode wordt aangeroepen in het notification_manager-object * / private int notification_id = 1; private final String NOTIFICATION_ID = "notification_id"; / * Dit zijn de klassen die u gebruikt om de melding * / private NotificationCompat.Builder notification_builder te starten; private NotificationManagerCompat notification_manager; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); / * * Stap 1 * Instantiation van de knop die u gebruikt om de melding te starten * / button = (Button) findViewById (R.id.notification_button); / * * Stap 2 * Maak de intentie die u gaat starten wanneer uw melding wordt ingedrukt * en laat de PendingIntent hiermee omgaan * / Intent open_activity_intent = nieuwe Intent (this, ActivatedActivity.class); open_activity_intent.putExtra (NOTIFICATION_ID, notification_id); PendingIntent pending_intent = PendingIntent.getActivity (this, 0, open_activity_intent, PendingIntent.FLAG_CANCEL_CURRENT); / * * Stap 3 * Hier maak je de melding en begin met het toevoegen van alle attributen die je gaat gebruiken * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string) .notification_title)) .setContentText (getString (R.string.notification_text)) / * * Deze methode geeft aan dat onze melding alle standaardkenmerken van een melding * zoals geluid en trillingen * / .setDefaults (Notification.DEFAULT_ALL) / * moet hebben Deze methode zal de melding negeren wanneer deze wordt ingedrukt * / .setAutoCancel (true) .setContentIntent (pending_intent); / * * Stap 4 * Hier starten we het Notification Manager-object op om de meldingen te starten / stoppen * / notification_manager = NotificationManagerCompat.from (this);  @Override protected void onStart () super.onStart (); / * * Stap 5 * De melding verschijnt wanneer u op de knop op het scherm drukt * / button.setOnClickListener (new View.OnClickListener () @Override public void onClick (View v) notification_manager.notify (notification_id, notification_builder .build ());); 

Stap 1

We starten eerst een knop op die we gebruiken om de melding te starten. U kunt de melding ook rechtstreeks in de onCreate methode,maar met een knop heeft u meer controle over de exacte timing van de melding.

Stap 2

In de tweede stap stellen we een voornemen object met de taak die moet worden uitgevoerd wanneer op de melding wordt getikt. We geven het object door aan a PendingIntent bijvoorbeeld om het later te behandelen wanneer het wordt aangeroepen.

Stap 3

Met behulp van de Android-ondersteuningsbibliotheek maken we de melding met behulp van de Bouwer klasse van de NotificationCompat object en zijn attributen instellen.

Stap 4

In deze stap maken we een a NotificationManagerCompat om de melding op elk gewenst moment te starten en / of te stoppen. Dit maakt het testen veel gemakkelijker.

Stap 5

Wanneer op de knop wordt getikt, wordt de melding geactiveerd met behulp van de verwittigen methode.

Vergeet niet om de klassen uit de Android Support Library te gebruiken. Op deze manier kunt u er zeker van zijn dat uw melding er goed zal uitzien op oudere versies van Android.

U kunt nu de app uitvoeren, op de knop tikken en zien dat de melding boven aan het scherm wordt weergegeven. Als u op de melding tikt, gaat u naar de ActivatedActivity activiteit. Als de melding is ingesteld en werkt, is het tijd om acties eraan toe te voegen.

5. Acties aan de melding toevoegen

U kunt extra acties aan de melding toevoegen door de Addaction methode op de notification_builder voorwerp. Om dit te laten werken, moet je een PendingIntent bijvoorbeeld met de taak die u wilt uitvoeren.

In het volgende codefragment laat ik de stappen zien die u moet uitvoeren om een ​​actie met een aangepaste taak te maken. In dit voorbeeld neem ik je mee naar mijn Twitter-profiel in de Twitter-app. Dit betekent dat ik een URI bijvoorbeeld verwijzend naar mijn Twitter-profiel, voeg dit toe aan de voornemen, en laat het PendingIntent behandel het wanneer er op de actie wordt getikt. Voeg dit codeblok toe vóór de instantiatie van de notification_builder voorwerp.

 / * De actie in de handheld-melding moet een bepaalde taak uitvoeren * In dit geval zal het Twitter-profiel van de auteur worden geopend, in de Twitter-app, wanneer er op * wordt geklikt, maar je kunt het met je profiel wijzigen als je wilt;) * / Intent open_twitter_profile = nieuwe 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 (this, 0, open_twitter_profile, 0);

Om de actie toe te voegen, roept u de Addaction methode op de notification_builder object en passeer in de open_twitter_profile object dat we zojuist hebben gemaakt.

/ * * Hier maak je de melding en begin met het toevoegen van alle attributen * die je gaat gebruiken * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Deze methode geeft aan dat uw melding alle standaardkenmerken van een kennisgeving * moet hebben, zoals geluid en trillingen * / .setDefaults (Notification.DEFAULT_ALL) / * Deze methode zal de melding negeren wanneer deze wordt ingedrukt * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Hier kunt u acties aan uw handheld toevoegen * zorg alleen voor het aantal acties dat u toevoegt * in dit geval, zoals in vele anderen, is minder meer * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent);

Voer de toepassing uit, tik op de knop om de melding te activeren en u zou de melding moeten zien samen met de actie die we zojuist hebben gemaakt.

Hoewel u meer acties aan een melding kunt toevoegen met behulp van de Addaction methode, zorg ervoor dat de gebruiker niet overweldigd wordt door het aantal acties waaruit ze kunnen kiezen.

6. Ondersteuning voor Android Wear

Tot nu toe hebben we de klassen uit de Android-ondersteuningsbibliotheek gebruikt om ervoor te zorgen dat de meldingen ook worden weergegeven op smartwatches met Android Wear. U kunt de applicatie uitvoeren op een fysieke smartwatch of u kunt hem uitproberen vanuit de Android Virtual Device Manager op de emulator. Hoe dan ook, je moet je apparaat synchroniseren met de smartwatch.

Voordat je je apparaat synchroniseert met de smartwatch-emulator, moet je de Android Wear-app installeren, die beschikbaar is op Google Play. Nadat u alle andere Android-apparaten hebt ontkoppeld die op uw computer zijn aangesloten, voert u de volgende opdracht uit vanaf de opdrachtregel.

adb-apparaten

Deze opdracht geeft de apparaten weer die zijn verbonden met uw ontwikkelmachine. Je zou er twee moeten zien, de smartwatch-emulator en je apparaat. Voer vervolgens de volgende opdracht uit vanaf de opdrachtregel om poort doorsturen in te schakelen.

adb -d forward tcp: 5601 tcp: 5601

U kunt nu uw apparaat verbinden met de emulator en de meldingen inschakelen met de Android Wear-app. Voer de app opnieuw uit en activeer de melding. De melding moet er ongeveer zo uitzien als hieronder weergegeven.

7. Acties voor alleen dragen toevoegen

Het is mogelijk om acties toe te voegen die alleen zichtbaar zijn op wearables. Dit wordt bereikt door het Addaction methode van de WearableExtender klasse. Het resultaat is dat alle acties toegevoegd via de NotificationCompat.Builder klas worden genegeerd.

Zoals we eerder deden, om de actie te activeren, maken we gebruik van een voornemen en een PendingIntent Bijvoorbeeld, maar we maken de actie die wordt weergegeven op het draagbare apparaat met behulp van de Bouwer klasse van een special Actie klasse, die deel uitmaakt van de NotificationCompat klasse zoals hieronder getoond.

/ * Hier geven we de intentie aan die we willen gebruiken wanneer de actie in de smartwatch wordt ingedrukt * / Intent wearable_intent = new Intent (this, ActivatedActivity.class); PendingIntent wearable_pending_intent = PendingIntent.getActivity (this, 0, wearable_intent, PendingIntent.FLAG_UPDATE_CURRENT); / * Nu hebben we een intentie voor de wearable die we hebben gemaakt om een ​​draagbare actie te maken die ervan gebruik maakt * / NotificationCompat.Action wearable_action = new NotificationCompat.Action.Builder (android.R.drawable.ic_dialog_email, getString (R.string.wearable_action) , wearable_pending_intent) .build ();

Vervolgens voegen we deze actie toe aan de notification_builder object met behulp van de uitbreiden methode zoals hieronder getoond.

/ * * Hier maak je de melding en begin met het toevoegen van alle attributen * die je gaat gebruiken * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title )) .setContentText (getString (R.string.notification_text)) / * * Deze methode geeft aan dat uw melding alle standaardkenmerken van een kennisgeving * moet hebben, zoals geluid en trillingen * / .setDefaults (Notification.DEFAULT_ALL) / * Deze methode zal de melding negeren wanneer deze wordt ingedrukt * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Hier kunt u acties aan uw handheld toevoegen * zorg alleen voor het aantal acties dat u toevoegt * in dit geval, zoals in vele anderen, is less more * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent) / * * Hier voegt u een actie toe voor alleen dragen * Deze actie zal niet worden uitgevoerd zichtbaar in het handheld-apparaat * / .extend (nieuwe WearableExtender ( ) .AddAction (wearable_action));

Voer de app uit en tik op de knop om de melding op uw apparaat weer te geven. Het moet anders zijn dan de melding die opduikt in de draagbare emulator.

Conclusie

Smartwatches zijn er om te blijven, althans voor een tijdje, en het is daarom belangrijk om te profiteren van deze nieuwe manier van communiceren met de gebruikers van je applicatie. Ik hoop dat je de tutorial nuttig hebt gevonden en vergeet niet om hem te delen als je hem leuk vindt.