Benachrichtigungen sind eine sehr nützliche Möglichkeit, um mit den Benutzern Ihrer Anwendung zu interagieren. Mit Android Wear verfügen wir jetzt auch über tragbare Geräte, auf denen Android ausgeführt wird. Es ist daher eine gute Idee, zu lernen, wie Sie diese neuen Funktionen nutzen können, indem Sie den Benachrichtigungen entsprechende Aktionen hinzufügen oder Aktionen erstellen, die nur auf tragbaren Geräten sichtbar sind.
In diesem Tutorial zeige ich Ihnen die moderne Implementierung von Benachrichtigungen, wie dies in der diesjährigen Google I / O gezeigt wurde. Wir werden das neue Support-Paket verwenden und seine Funktionen erweitern, indem wir Aktionen hinzufügen, die nur auf Smartwatches sichtbar sind, den einzigen tragbaren Geräten, die zum Zeitpunkt der Erstellung mit Android Wear verfügbar sind.
Für dieses Projekt können Sie entweder Android Studio oder die Android Developer Tools verwenden. Wenn Sie Android Studio verwenden, stellen Sie sicher, dass Sie die folgende Zeile zu Ihrem hinzufügen build.gradle Datei.
kompilieren Sie "com.android.support:support-v4:20.0.+"
Starten Sie Ihre IDE und erstellen Sie ein neues Android-Projekt oder öffnen Sie ein zuvor erstelltes Projekt. Für dieses Tutorial werde ich ein neues Projekt erstellen und benennen VerbesserteNachrichten. Vergessen Sie nicht, einen eindeutigen Paketnamen zu verwenden.
Stellen Sie beim Einrichten des Projekts sicher, dass Sie die Option auswählen Leere Aktivität Option in der Aktivität erstellen Schritt.
Erstellen Sie nach dem Erstellen des Projekts eine neue Aktivität, AktivierteAktivität
. Diese Aktivität wird von einer Benachrichtigung auf Ihrem mobilen oder tragbaren Gerät aufgerufen.
Bevor wir fortfahren, müssen wir das aktualisieren strings.xml Datei durch Hinzufügen der Zeichenfolgen, die wir später in diesem Tutorial verwenden werden.
VerbesserteNachrichten AktivierteAktivität Hallo"!" Ich bin die aktivierte Aktivität Versuchen Sie mich für eine neue Benachrichtigung Hallo Mutter"!" Ich bin ein Titel Schau mich an"!" Ich bin ein sexy Benachrichtigungsinhalt Lassen Sie "" das Twitter-Profil des Autors sehen Ich komme nur hier vor
Im nächsten Schritt erstellen Sie ein Layout für die Hauptaktivität
und das AktivierteAktivität
Klassen. Das Layout für die Hauptaktivität
Klasse wird unten gezeigt.
Und das ist das Layout für die AktivierteAktivität
Klasse.
Wir erstellen eine Benachrichtigung im Hauptaktivität
Klasse. Im folgenden Codeausschnitt können Sie sehen, welche Schritte zum Erstellen einer Benachrichtigung erforderlich sind. Ich habe den Codeblock kommentiert, um Ihnen das Verständnis der verschiedenen Schritte zu erleichtern, aber gehen wir Schritt für Schritt durch das Snippet.
Paket 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 erweitert Activity / * Widgets, die Sie verwenden möchten * / private Button-Schaltfläche; / * * Dies ist die Benachrichtigungs-ID. * Sie können es verwenden, um die Benachrichtigung abzubrechen, die die .cancel () -Methode für das notification_manager-Objekt aufruft. * / Private int notification_id = 1; private final String NOTIFICATION_ID = "notification_id"; / * Dies sind die Klassen, mit denen Sie die Benachrichtigung starten. * / Private NotificationCompat.Builder notification_builder; private NotificationManagerCompat notification_manager; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); / * * Schritt 1 * Instanziierung der Schaltfläche, mit der Sie die Benachrichtigung starten * / button = (Button) findViewById (R.id.notification_button); / * * Schritt 2 * Erstellen Sie die Absicht, die Sie starten möchten, wenn Ihre Benachrichtigung gedrückt wird *, und überlassen Sie es dem PendingIntent * * Intent open_activity_intent = new 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); / * * Schritt 3 * Hier erstellen Sie die Benachrichtigung und beginnen mit dem Hinzufügen aller Attribute, die Sie verwenden werden. * / Notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string) .notification_title)) .setContentText (getString (R.string.notification_text)) / * * Diese Methode gibt an, dass unsere Benachrichtigung alle Standardmerkmale einer Benachrichtigung aufweisen muss, z. B. Sound und Vibration. * / .setDefaults (Notification.DEFAULT_ALL) / * Diese Methode wird die Benachrichtigung verwerfen, sobald sie gedrückt wird. * / .SetAutoCancel (true) .setContentIntent (pending_intent); / * * Schritt 4 * Hier instantiieren wir das Notification Manager-Objekt, um die Benachrichtigungen zu starten / stoppen. * / Notification_manager = NotificationManagerCompat.from (this); @Override protected void onStart () super.onStart (); / * * Schritt 5 * Die Benachrichtigung wird angezeigt, wenn Sie die Taste auf dem Bildschirm drücken. * / Button.setOnClickListener (neuer View.OnClickListener () @Override public void onClick (View v) notification_manager.notify (notification_idager, notification_builder) .bauen()); );
Zuerst instanziieren wir die Schaltfläche, mit der wir die Benachrichtigung starten. Sie können die Benachrichtigung auch direkt im erstellen onCreate
Methode,Mit einer Schaltfläche haben Sie jedoch mehr Kontrolle über den genauen Zeitpunkt der Benachrichtigung.
Im zweiten Schritt instanziieren wir eine Absicht
Objekt mit der Aufgabe, die beim Tippen auf die Benachrichtigung ausgeführt werden soll. Wir übergeben das Objekt an a PendingIntent
Instanz später damit umgehen, wenn es aufgerufen wird.
Mit der Android Support Library erstellen wir die Benachrichtigung mit Baumeister
Klasse der NotificationCompat
Objekt und seine Attribute setzen.
In diesem Schritt instanziieren wir a NotificationManagerCompat
Instanz, um die Benachrichtigung zu starten und / oder zu stoppen, wann immer wir möchten. Dies erleichtert das Testen.
Wenn Sie auf die Schaltfläche tippen, wird die Benachrichtigung mit der Taste ausgelöst benachrichtigen
Methode.
Vergessen Sie nicht, die Klassen aus der Android Support Library zu verwenden. Auf diese Weise können Sie sicher sein, dass Ihre Benachrichtigung auf älteren Android-Versionen gut aussieht.
Sie können jetzt die App ausführen, auf die Schaltfläche tippen und die Benachrichtigung oben auf dem Bildschirm sehen. Wenn Sie auf die Benachrichtigung tippen, gelangen Sie zum AktivierteAktivität
Aktivität. Wenn die Benachrichtigung eingerichtet ist und funktioniert, müssen Sie jetzt weitere Aktionen hinzufügen.
Sie können der Benachrichtigung zusätzliche Aktionen hinzufügen, indem Sie die addAction
Methode auf der notification_builder
Objekt. Damit dies funktioniert, müssen Sie eine PendingIntent
Beispiel mit der Aufgabe, die Sie ausführen möchten.
Im folgenden Codeausschnitt zeige ich Ihnen die Schritte, die Sie zum Erstellen einer Aktion mit einer benutzerdefinierten Aufgabe implementieren müssen. In diesem Beispiel führe ich Sie zu meinem Twitter-Profil in der Twitter-App. Das heißt ich brauche eine URI
Instanz, die auf mein Twitter-Profil zeigt, fügen Sie dies dem hinzu Absicht
, und lass die PendingIntent
handhaben, wenn die Aktion getippt wird. Fügen Sie diesen Codeblock vor der Instantiierung von ein notification_builder
Objekt.
/ * Die Aktion in der Handheld-Benachrichtigung muss eine bestimmte Aufgabe erfüllen. * In diesem Fall wird das Twitter-Profil des Autors in der Twitter-App geöffnet, wenn Sie auf * klicken, aber Sie können es mit Ihrem Profil ändern, wenn Sie möchten;) * / Intent open_twitter_profile = new Intent (Intent.ACTION_VIEW); Uri twitter_profile_location = Uri.parse ("twitter: // user? Bildschirmname = @ kerpie"); open_twitter_profile.setData (twitter_profile_location); PendingIntent twitter_intent = PendingIntent.getActivity (this, 0, open_twitter_profile, 0);
Um die Aktion hinzuzufügen, rufen Sie das auf addAction
Methode auf der notification_builder
Objekt und übergeben in der open_twitter_profile
Objekt, das wir gerade erstellt haben.
/ * * Hier erstellen Sie die Benachrichtigung und fügen alle Attribute hinzu. * Sie werden * * notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title) verwenden )) .setContentText (getString (R.string.notification_text)) / * * Diese Methode gibt an, dass Ihre Benachrichtigung alle Standardmerkmale einer Benachrichtigung aufweisen muss, z. B. Sound und Vibration. * / .setDefaults (Notification.DEFAULT_ALL) / * Diese Methode lehnt die Benachrichtigung ab, sobald sie gedrückt wird * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Hier können Sie Aktionen zu Ihrem Handheld-Gerät hinzufügen. * In diesem Fall müssen Sie nur die Anzahl der hinzugefügten Aktionen beachten. wie in vielen anderen ist weniger mehr * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent);
Starten Sie die Anwendung, tippen Sie auf die Schaltfläche, um die Benachrichtigung auszulösen. Die Benachrichtigung sollte zusammen mit der gerade erstellten Aktion angezeigt werden.
Während Sie einer Benachrichtigung weitere Aktionen hinzufügen können, verwenden Sie die addAction
Stellen Sie sicher, dass der Benutzer nicht von der Anzahl der Aktionen, die er auswählen kann, überwältigt wird.
Bisher haben wir die Klassen aus der Android Support Library verwendet, um sicherzustellen, dass die Benachrichtigungen auch auf Smartwatches mit Android Wear angezeigt werden. Sie können die Anwendung auf einer physischen Smartwatch ausführen oder über den virtuellen Android-Geräte-Manager mit dem Emulator testen. In jedem Fall müssen Sie Ihr Gerät mit der Smartwatch synchronisieren.
Bevor Sie Ihr Gerät mit dem Smartwatch-Emulator synchronisieren, müssen Sie die Android Wear-App installieren, die bei Google Play verfügbar ist. Nachdem Sie alle anderen an Ihren Computer angeschlossenen Android-Geräte getrennt haben, führen Sie den folgenden Befehl über die Befehlszeile aus.
ADB-Geräte
Dieser Befehl listet die an Ihre Entwicklungsmaschine angeschlossenen Geräte auf. Sie sollten zwei davon sehen, den Smartwatch-Emulator und Ihr Gerät. Führen Sie dann den folgenden Befehl über die Befehlszeile aus, um die Portweiterleitung zu aktivieren.
adb -d vorwärts tcp: 5601 tcp: 5601
Sie können jetzt Ihr Gerät mit dem Emulator verbinden und die Benachrichtigungen mithilfe der Android Wear-App aktivieren. Führen Sie die App erneut aus und lösen Sie die Benachrichtigung aus. Die Benachrichtigung sollte ähnlich der unten gezeigten aussehen.
Es können Aktionen hinzugefügt werden, die nur bei Wearables sichtbar sind. Dies wird durch Aufrufen von erreicht addAction
Methode der WearableExtender
Klasse. Das Ergebnis ist, dass alle durch das Hinzufügen von Aktionen hinzugefügt werden NotificationCompat.Builder
Klasse werden ignoriert.
Um die Aktion auszulösen, verwenden wir wie zuvor ein Absicht
und ein PendingIntent
Beispiel, aber wir erstellen die auf dem tragbaren Gerät angezeigte Aktion mit Baumeister
Klasse eines besonderen Aktion
Klasse, die Teil der NotificationCompat
Klasse wie unten gezeigt.
/ * Hier instanziieren wir den Intent, den wir verwenden möchten, wenn die Aktion in der Smartwatch gedrückt wird. * / Intent wearable_intent = new Intent (this, ActivatedActivity.class); PendingIntent wearable_pending_intent = PendingIntent.getActivity (this, 0, wearable_intent, PendingIntent.FLAG_UPDATE_CURRENT); / * Jetzt haben wir eine Absicht für das erstellte Wearable. Wir müssen eine Wearable-Aktion erstellen. * / NotificationCompat.Action wearable_action = new NotificationCompat.Action.Builder (android.R.drawable.ic_dialog_email, getString (R.string.wearable_action) , wearable_pending_intent) .build ();
Wir fügen diese Aktion dann dem hinzu notification_builder
Objekt mit der erweitern
Methode wie unten gezeigt.
/ * * Hier erstellen Sie die Benachrichtigung und beginnen mit dem Hinzufügen aller Attribute *, die Sie verwenden werden * / notification_builder = new NotificationCompat.Builder (this) .setSmallIcon (R.drawable.ic_launcher) .setContentTitle (getString (R.string.notification_title) )) .setContentText (getString (R.string.notification_text)) / * * Diese Methode gibt an, dass Ihre Benachrichtigung alle Standardmerkmale einer Benachrichtigung aufweisen muss, z. B. Sound und Vibration. * / .setDefaults (Notification.DEFAULT_ALL) / * Diese Methode lehnt die Benachrichtigung ab, sobald sie gedrückt wird * / .setAutoCancel (true) .setContentIntent (pending_intent) / * * Hier können Sie Aktionen zu Ihrem Handheld-Gerät hinzufügen. * In diesem Fall müssen Sie nur die Anzahl der hinzugefügten Aktionen beachten. Wie in vielen anderen ist weniger mehr * / .addAction (android.R.drawable.ic_dialog_info, getString (R.string.first_action), twitter_intent) / * * Hier fügen Sie eine Aktion hinzu, die nur für den Wearable geeignet ist. * Diese Aktion wird nicht sein sichtbar auf dem Handgerät * / .extend (neuer WearableExtender ( ) .addAction (wearable_action));
Führen Sie die App aus und tippen Sie auf die Schaltfläche, um die Benachrichtigung auf Ihrem Gerät anzuzeigen. Es sollte sich von der Benachrichtigung unterscheiden, die auf dem tragbaren Emulator angezeigt wird.
Smartwatches bleiben mindestens für eine Weile bestehen. Es ist daher wichtig, diese neue Art der Kommunikation mit den Benutzern Ihrer Anwendung zu nutzen. Ich hoffe, Sie fanden das Tutorial hilfreich und vergessen Sie nicht, es mitzuteilen, wenn es Ihnen gefallen hat.