Home / Android-Entwicklung / Erkunden von Android F: Hinzufügen von Bubble-Benachrichtigungen zu Ihrer App

Erkunden von Android F: Hinzufügen von Bubble-Benachrichtigungen zu Ihrer App

Im Jahr 2018 fügte Google seiner iPhone-Anwendung eine neue Funktion "Chat-Kopf" hinzu, mit der der Avatar des Anrufers als schwebende Benachrichtigung im Bubble-Stil angezeigt wurde. Beim Antippen wurde diese Sprechblase erweitert, um eine Reihe von Steuerelementen anzuzeigen, mit denen der Benutzer Aufgaben direkt aus der Benachrichtigung heraus ausführen kann, z. B. den Anrufer auflegen und auflegen kann.

In Android Q führt Google Chat-Kopf-Benachrichtigungen durch ein offizieller Teil der Android-Plattform, mit der Einführung der Bubble-API. Diese Blasen können nützliche Informationen zu Ereignissen enthalten, die an anderer Stelle in Ihrer App stattfinden, sie können jedoch auch benutzerdefinierte Aktionen enthalten. Mit diesen Aktionen kann der Benutzer mit Ihrer App interagieren, auch wenn er eine andere Aktivität oder Anwendung anzeigt oder sich in einem nicht verwandten Teil des Android-Betriebssystems befindet.

In diesem Artikel werde ich alles teilen, was Sie möchten Bevor Sie mit der Verwendung von Blasen in Ihren eigenen Android-Apps beginnen, müssen Sie sich mit dieser bevorstehenden Android Q-Funktion vertraut machen, einschließlich der für Entwickler und Endbenutzer interessanten Bubbles, bewährter Methoden und einiger Einschränkungen.

] Am Ende dieses Artikels sind Sie mit dieser neuen Android Q-Funktion auf dem Laufenden und haben eine Android-App mit eigenen Blasenbenachrichtigungen erstellt.

Was sind die Blasen von Android Q?

Blasenanzeige Der Inhalt Ihrer App in einem Fenster, das über der vorhandenen Vordergrundaktivität zu „schweben“ scheint.

Im reduzierten Zustand wird eine Blasenbenachrichtigung durch ein kleines Symbol dargestellt. Diese Symbole sind standardmäßig weiß, Sie können sie jedoch mit einem Bild versehen, beispielsweise mit dem Symbol Ihrer App oder dem Avatar der Person, die mit dieser Benachrichtigung verbunden ist.

 Blasenbenachrichtigungen werden als ausgeblendete Symbole angezeigt in ihrem Standardzustand

Wenn der Benutzer auf eine reduzierte Blase tippt, wird eine Absicht aufgerufen und Ihre Blase wird in ihrem erweiterten Zustand angezeigt, der normalerweise zusätzliche Informationen enthält und möglicherweise auch Zugriff auf einige verwandte Funktionen bietet. [19659002]  Durch Klicken auf ein Blasensymbol wird das erweiterte Layout angezeigt.

Wenn eine Blase erweitert wird, wird die zugehörige Anwendung zum Vordergrundprozess, sofern dies noch nicht geschehen ist.

Benutzer können mit einer Blase interagieren ohne von ihrer aktuellen Aktivität weg navigieren zu müssen, wodurch Blasen eine leistungsstarke Möglichkeit darstellen, Benutzer erneut zu binden und sie möglicherweise wieder in Ihre App zu ziehen.

Auch wenn sich der Benutzer bereits in Ihrer App befindet, wird eine Blase angezeigt Sie können ihnen helfen, schnell und einfach auf wichtige Ereignisse zu reagieren, die an anderer Stelle in Ihrer Anwendung stattfinden. Stellen Sie sich beispielsweise vor, Sie haben eine Messaging-App entwickelt und der Benutzer erhält eine Nachricht von Kontakt B, wenn er gerade eine Nachricht an Kontakt A verfasst hat. Anstatt ihn zu zwingen, zu der Aktivität zu navigieren, in der dieses Ereignis aufgetreten ist, müssen Sie Die Nachricht von Kontakt B kann als Blasenbenachrichtigung angezeigt werden. Der Benutzer kann dann die Nachricht lesen und beantworten ohne vom Entwurf weg navigieren zu müssen.

Es sei denn, der Benutzer entfernt eine Blase explizit, indem er sie vom Bildschirm zieht bleibt diese Blase auch dann sichtbar, wenn der Benutzer zwischen verschiedenen Anwendungen und Bereichen des Betriebssystems navigiert. Da Sprechblasen ein dauerhafter Bestandteil der Android-Benutzeroberfläche sind, können sie einen praktischen Ort zum Speichern von Notizen oder zum Verwalten laufender Aufgaben darstellen. Sie können beispielsweise die Aufgabenliste oder den Reiseverlauf des Benutzers in einer Sprechblase speichern, sodass sie sich immer in der Benutzeroberfläche befinden leicht zu erreichen.

Sie können auch Blasen als Erinnerung verwenden. Ihre App kann beispielsweise eine Blase erzeugen, wenn der Benutzer sich in eine Besprechung einloggen, eine wichtige E-Mail senden oder eine andere zeitkritische Aufgabe ausführen muss. [19659016] Verwendet Facebook seit Jahren keine Benachrichtigungen über Sprechblasen mehr?

Floating-Benachrichtigungen im Sprechblasenstil sind kein neues Konzept für Android, da sie seit langem in Apps von Drittanbietern verfügbar sind, insbesondere in Facebook Messenger. Zuvor war es jedoch Aufgabe des Entwicklers, eigene Bubble-Benachrichtigungen zu entwerfen und zu implementieren.

Das Erstellen eines benutzerdefinierten Features ist immer zeitaufwendiger als die Nutzung von Klassen und APIs, die bereits in die Android-Plattform integriert sind. jetzt, da Blasen offiziell Teil von Android sind, sollte es für Entwickler viel einfacher sein, diesen Benachrichtigungsstil zu verwenden. Diese offizielle Unterstützung bietet Benutzern auch eine konsistentere Erfahrung, da alle Blasen nun unabhängig von der Anwendung, die sie generiert hat, genau dasselbe Verhalten aufweisen sollten.

Android-Q-Blasen: Welche Einschränkungen gelten?

Blasen werden angezeigt über den Inhalt, den der Benutzer gerade anzeigt. Wenn Ihre App eine große Anzahl von Blasen erzeugt oder unnötige Blasenbenachrichtigungen erstellt, verlieren Benutzer schnell die Geduld mit Ihrer App.

Jemand, der sich von Blasen bombardiert fühlt, kann die Blasenfunktion für Ihre Anwendung deaktivieren oder Sie können Ihre App sogar vollständig deinstallieren.

Um die Benutzerfreundlichkeit zu gewährleisten, werden Ihre Bubble-Benachrichtigungen nur angezeigt, wenn sie mindestens einem der folgenden Kriterien entsprechen:

  • Ihre Anwendung steht beim Senden der Benachrichtigung im Vordergrund.
  • Der Benachrichtigung wurde eine Person hinzugefügt. Wenn einer Benachrichtigung mehrere Personen zugeordnet sind, müssen Sie diese Konversation auch mit setGroupConversation (boolean) als Gruppe kennzeichnen.
  • Die Benachrichtigung stammt aus einem Aufruf von Service.startForeground, es wurde eine Person hinzugefügt und fällt in die CATEGORY_CALL-Benachrichtigungskategorie, die angibt, dass es sich um eine synchrone Kommunikationsanforderung handelt, z. B. ein Sprach- oder Videoanruf.

Wenn keine dieser Bedingungen erfüllt ist, werden Ihre Sprechblasen stattdessen als Standardbenachrichtigung angezeigt. Wenn das Gerät gesperrt ist oder die Daueranzeige aktiv ist, werden Ihre Blasen wieder nur als Standardbenachrichtigungen angezeigt.

Sie sollten sich auch darüber im Klaren sein, dass Blasen zum Zeitpunkt des Schreibens eine optionale Funktion waren. Wenn Ihre Anwendung zum ersten Mal versucht, eine Sprechblase zu generieren, wird dem Benutzer ein Berechtigungsdialogfeld angezeigt, in dem er die Möglichkeit hat, Sprechblasen für Ihre Anwendung zu deaktivieren. Wenn der Benutzer die Sprechblasenfunktion deaktiviert, werden die Sprechblasen Ihrer App immer als Standardbenachrichtigungen angezeigt, auch wenn sie alle oben genannten Kriterien erfüllen.

Was wir erstellen werden

In diesem Artikel werden wir erstellen Eine Anwendung, die die neue Bubble-Benachrichtigungsfunktion von Android Q verwendet. Um das Testen unserer App zu vereinfachen, verfügt sie über eine Schaltfläche, die bei jedem Antippen eine Blasenbenachrichtigung generiert.

 Wir erstellen eine App, die bei Bedarf eine Blasenbenachrichtigung auslöst [19659002] Da Chat-Anwendungen die naheliegendste Wahl für Seifenblasen sind, simuliert unsere App, dass der Benutzer eine neue Nachricht erhält, ähnlich der Facebook Messenger-App. Wenn diese Sprechblase erweitert wird, enthält sie einen Bereich, in dem die Nachricht angezeigt wird, sowie zwei Aktionen, die der Benutzer ausführen kann: Rufen Sie diesen Kontakt an oder senden Sie ihm eine Textantwort.

 Die Sprechblasenbenachrichtigungen von Android Q können Informationen und enthalten actions

Um mit dieser neuen Funktion zu experimentieren, benötigen Sie die neueste Vorschau von Android Studio 3.5. Die neueste Version finden Sie auf der Preview Release-Website.

Sie benötigen außerdem das Android Q Preview SDK und die Android SDK Build-Tools 28 oder höher:

  • Wählen Sie „Tools> SDK Manager“ im Android Studio-Symbolleiste.
  • Wählen Sie im folgenden Fenster die Registerkarte "SDK-Plattformen".
  • Wählen Sie die neueste Version von "Android Q Preview".
  • Wechseln Sie zur Registerkarte "SDK-Tools".
  • Wählen Sie "Android SDK Build-Tools 28" oder höher.
  • Klicken Sie auf "OK", um diese Komponenten zu installieren.

Beachten Sie, dass das folgende Tutorial mit Android Q Beta 2 erstellt wurde, als Bubble-Benachrichtigungen noch als experimentelle Funktion betrachtet wurden. Wenn Sie eine neuere Version von Android Q verwenden, können geringfügige Unterschiede auftreten.

Erstellen unserer Android Q-App

Erstellen Sie zunächst ein neues Android-Projekt mit der Vorlage "Leere Aktivität" Stellen Sie sicher, dass Ihre App auf die neueste Version von Android Q abzielt.

Wenn Sie einer vorhandenen Anwendung Blasen hinzufügen, müssen Sie die build.gradle-Datei Ihres Projekts öffnen und compileSdkVersion, minSdkVersion und targetSdkVersion auf "aktualisieren. android-Q. ”









 android {
   compileSdkVersion 'android-Q'
   defaultConfig {
...
       minSdkVersion 'Q'
       targetSdkVersion 'Q'
...
   }
...
} 

Öffnen Sie als Nächstes Ihre build.gradle-Datei und fügen Sie die neueste Version der Material Components for Android-Bibliothek zu Ihrem Block "Abhängigkeiten" hinzu:












Abhängigkeiten {
   Implementierung fileTree (dir: 'libs', include: ['*.jar'] 









)
   Implementierung 'androidx.appcompat: appcompat: 1.0.2'
   Implementierung 'androidx.constraintlayout: constraintlayout: 1.1.3'

// Füge das Folgende hinzu //

   Implementierung 'com.google.android.material: material: 1.1.0-alpha07'
   testImplementation 'junit: junit: 4.12'
   androidTestImplementation 'androidx.test.ext: junit: 1.1.0'
   androidTestImplementation 'androidx.test.espresso: espresso-core: 3.1.1'
}

Erstellen der Hauptbenutzeroberfläche

Für unser Projekt werden eventuell zwei Layouts benötigt: eines für die Hauptanwendung und eines, das das Layout unserer erweiterten Blase definiert.

Öffnen Sie die Datei activity_main.xml Ihres Projekts und lassen Sie uns Erstelle den Button, der unsere Bubble-Benachrichtigung generiert:










   



Erstellen einer Blasenbenachrichtigung

Als Nächstes müssen Sie die Blasenbenachrichtigung erstellen. Die Sprechblasen von Android Q bauen auf dem vorhandenen Benachrichtigungssystem von Android auf. Wenn Sie also bereits Erfahrungen mit der Arbeit mit Android-Benachrichtigungen gesammelt haben, sollten Sie sich mit dem Erstellen einer Sprechblase sofort vertraut machen.

Führen Sie die folgenden Schritte aus, um eine Android Q-Sprechblase zu erstellen :

1. Mindestens einen Benachrichtigungskanal erstellen

Mit Android 8.0 wurde das Konzept von Benachrichtigungskanälen eingeführt, bei denen alle Benachrichtigungen, die auf denselben Kanal gesendet werden, dasselbe Verhalten aufweisen.

Da unsere Anwendung auf Android 8.0 oder ausgerichtet ist Darüber hinaus müssen alle unsere Benachrichtigungen einem Benachrichtigungskanal, einschließlich Blasen, zugewiesen werden.

Um einen Benachrichtigungskanal zu erstellen, müssen Sie ein NotificationChannel-Objekt erstellen und übergeben:

  • Eine ID, die für Ihr Paket eindeutig sein muss .
  • Der Name des Kanals, der dem Benutzer über den Einstellungsbildschirm des Kanals angezeigt wird.
  • Eine Wichtigkeitsstufe. In Android Oreo und höher können Sie die Prioritätsstufe für einzelne Benachrichtigungen nicht mehr festlegen. Stattdessen müssen Sie die Wichtigkeitsstufe des Kanals angeben, die dann auf jede Benachrichtigung angewendet wird, die an diesen Kanal gesendet wird. Bubble-Benachrichtigungen müssen die Stufe IMPORTANCE_HIGH aufweisen, damit die Bubble auf dem Bildschirm angezeigt wird, unabhängig davon, was der Benutzer gerade tut.

Mit Android Q wird außerdem eine setAllowBubbles () -Methode eingeführt, mit der Sie angeben können, dass dieser Kanal dies unterstützt Blasen ("wahr"). Der Wert von setAllowBubbles () wird für Kanäle mit einer Wichtigkeitsstufe von IMPORTANCE_DEFAULT oder niedriger ignoriert. Daher müssen Sie Ihren Kanal als setAllowBubbles (true) und IMPORTANCE_HIGH

kennzeichnen. Erstellen Sie unseren Benachrichtigungskanal. Hier können Sie auch ein zusätzliches gewünschtes Verhalten festlegen, z. B. ob Benachrichtigungen, die an diesen Kanal gesendet werden, dazu führen sollen, dass die LEDs des Geräts blinken.








 CharSequence name = "Mein neuer Kanal";
       String description = "Beschreibung";
       int important = NotificationManager.IMPORTANCE_HIGH;

// Erstelle das Channel Objekt //

      channel = new NotificationChannel ("1", Name, Wichtigkeit);
      channel.setDescription (Beschreibung);
      channel.setAllowBubbles (true); 

Anschließend können Sie dieses NotificationChannel-Objekt mithilfe der createNotificationChannel () -Methode an den NotificationManager senden:

 notificationManager.createNotificationChannel (channel); 

2. Erstellen der Bubble-Absicht

Später in diesem Lernprogramm erstellen wir eine BubbleActivity, die jedes Mal gestartet wird, wenn der Benutzer mit dem Bubble-Symbol interagiert.

Im folgenden Snippet erstellen wir ein PendingIntent, das die Aktivität, die in unserer erweiterten Blase angezeigt wird:


 Intent target = new Intent (MainActivity.this, BubbleActivity.class);
               PendingIntent bubbleIntent =
                       PendingIntent.getActivity (MainActivity.this, 0, target, PendingIntent.FLAG_UPDATE_CURRENT / * flags * /); 

3. Erstellen der BubbleMetaData

Als Nächstes müssen Sie ein BubbleMetadata-Objekt erstellen, das alle für die Anzeige unserer Benachrichtigungsblase erforderlichen Daten kapselt.

Sie erstellen ein BubbleMetadata-Objekt, indem Sie den Notification.BubbleMetadata.Builder-Konstruktor aufrufen. Wir können dann setIntent () verwenden, um die Ziel-Bubble-Intent anzugeben, die jedes Mal ausgeführt wird, wenn der Benutzer mit dieser Bubble interagiert.






 Notification.BubbleMetadata bubbleData =
                       neue Notification.BubbleMetadata.Builder ()
...
...
...
                            .setIntent (bubbleIntent)
                            .build (); 

Beim Erstellen eines BubbleMetadata-Objekts müssen Sie mithilfe der Notification.BubbleMetadata.Builder.setIcon (Icon) -Methode auch das Symbol festlegen, das diese Blase in ihrem ursprünglichen, reduzierten Zustand darstellt. Sie müssen für jede Blase, die Ihre Anwendung erstellt, ein Symbol bereitstellen. Dieses Symbol sollte für den Inhalt der Blase repräsentativ sein.

Die Form des Blasensymbols ist anpassungsfähig und kann an die des Geräts angepasst werden Thema. Beachten Sie, dass Sie, wenn Ihr Symbol auf Bitmaps basiert, createWithAdaptiveBitmap verwenden müssen, um sicherzustellen, dass Ihr Symbol gemäß den in der AdaptiveIconDrawable-Klasse definierten Designrichtlinien oder -Tags generiert wird.

Wir können auch festlegen eine gewünschte Höhe für den Inhalt der Sprechblase, obwohl dieser Wert ignoriert wird, wenn nicht genügend Platz auf dem Bildschirm verfügbar ist.

Dies ergibt Folgendes:





 Notification.BubbleMetadata bubbleData =
                       neue Notification.BubbleMetadata.Builder ()
                               .setDesiredHeight (600)
                               .setIcon (Icon.createWithResource (MainActivity.this, R.drawable.ic_message))
                               .setIntent (bubbleIntent)
                               .build (); 

4. Hinzufügen der Metadaten zur Sprechblase

Als Nächstes müssen wir das BubbleMetadata-Objekt an unsere Benachrichtigung anhängen.

Android Q fügt der Benachrichtigungserstellungsklasse eine neue setBubbleMetaData () -Methode hinzu. Bei dieser Methode wird eine Instanz von BubbleMetadata verwendet, mit der der Inhalt Ihrer Blase im erweiterten Zustand angezeigt wird.

 .setBubbleMetadata (bubbleData); 

Die abgeschlossene MainActivity

Nachdem Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MainActivity ungefähr so ​​aussehen:




























































































 import androidx.appcompat.app.AppCompatActivity;
Import android.app.Notification;
Import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;

android.content.Context importieren;
android.content.Intent importieren;
import android.graphics.drawable.Icon;
android.os.Bundle importieren;
import android.widget.Button;
android.view.View importieren;

public class MainActivity erweitert AppCompatActivity implementiert View.OnClickListener {

   Button createBubble;

   Notification.Builder builder;
   NotificationManager notificationManager;
   NotificationChannel channel;

   @Override
   protected void onCreate (Bundle savedInstanceState) {
       super.onCreate (savedInstanceState);
       setContentView (R.layout.activity_main);

       createBubble = findViewById (R.id.createBubble);

       notificationManager = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE);

       CharSequence name = "Mein neuer Kanal";
       String description = "Beschreibung";
       int important = NotificationManager.IMPORTANCE_HIGH;

// Erstelle das Channel Objekt //

       channel = new NotificationChannel ("1", Name, Wichtigkeit);
       channel.setDescription (Beschreibung);
       channel.setAllowBubbles (true);

       createBubble.setOnClickListener (this);
   }

   @Override
   public void onClick (Ansicht Ansicht) {

       switch (view.getId ()) {
           case R.id.createBubble:

// Die Aktivität, die in unserer erweiterten Blase angezeigt wird //

              Intent target = new Intent (MainActivity.this, BubbleActivity.class);

// PendingIntent erstellen //

               PendingIntent bubbleIntent =
      PendingIntent.getActivity (MainActivity.this, 0, target, PendingIntent.FLAG_UPDATE_CURRENT / * flags * /);

// Erstelle ein BubbleMetadata Objekt //

               Notification.BubbleMetadata bubbleData =
                       neue Notification.BubbleMetadata.Builder ()

// Geben Sie die gewünschte Höhe der Blase an //

              .setDesiredHeight (600)

// Gib das Blasensymbol an //

             .setIcon (Icon.createWithResource (MainActivity.this, R.drawable.ic_message))

// Spezifiziere den Ziel-Bubble-Intent //

                               .setIntent (bubbleIntent)
                               .bauen();

               builder = new Notification.Builder (MainActivity.this, channel.getId ())
                      .setSmallIcon (R.drawable.ic_message)

// Füge das BubbleMetadata Objekt hinzu //

                      .setBubbleMetadata (bubbleData);

// Übermittle den NotificationChannel an NotificationManager //

               notificationManager.createNotificationChannel (channel);
               notificationManager.notify (1, builder.build ());
               brechen;

       }

   }
} 

Erstellen des Blasensymbols

Unsere MainActivity verweist auf eine "ic_message" -Zeichnung, die verwendet wird, um unsere Blase in ihrem ursprünglichen, kollabierten Zustand darzustellen. Erstellen wir dieses Symbol jetzt:

  • Wählen Sie in der Android Studio-Symbolleiste "Datei> Neu> Bild-Asset".
  • Öffnen Sie das Dropdown-Menü "Symboltyp" und wählen Sie "Aktionsleisten- und Tabulatorsymbole".
  • Vergewissern Sie sich, dass Die Schaltfläche "ClipArt" ist ausgewählt.
  • Klicken Sie auf die Schaltfläche "ClipArt".
  • Wählen Sie das Bild aus, das Ihre Blasenbenachrichtigung darstellt. Ich wähle "Nachricht".
  • Klicken Sie auf "OK".
  • Geben Sie in das Feld "Name" "ic_message" ein.
  • Klicken Sie auf "Weiter". Lesen Sie die Informationen auf dem Bildschirm Klicken Sie auf "Fertig stellen", um fortzufahren.

Während wir hier sind, erstellen wir die anderen Bildelemente, die wir in diesem Lernprogramm verwenden werden. Unsere erweiterte Sprechblase wird eventuell zwei Symbole verwenden, um zwei unterschiedliche Aktionen darzustellen: Anrufen des Kontakts und Senden einer Textantwort.

Wiederholen Sie die obigen Schritte, um diese Zeichenobjekte zu erstellen. Diesmal jedoch:

  • Wählen Sie ein Bild aus, das ' Ich werde die Call-Aktion der Blase darstellen. Ich verwende die Ressource "mic" und benenne sie "ic_voice".
  • Wählen Sie ein Bild aus, das die Aktion "Antwort auf Nachricht" der Blase darstellt. Ich verwende die Zeichenfolge "reply" und nenne sie "ic_reply".

Erstellen der Bubble-Aktivität

Als Nächstes müssen wir die Aktivität erstellen, die dem Benutzer bei jeder Interaktion mit unserer Bubble angezeigt wird .

  • Wählen Sie "Datei> Neu> Java-Klasse" aus der Android Studio-Symbolleiste.
  • Nennen Sie diese Klasse im folgenden Fenster "BubbleActivity".
  • Klicken Sie auf "OK".

Wir verwenden dies Klasse zum Definieren des Inhalts der Sprechblase, einschließlich aller Aktionen, die der Benutzer durch Interaktion mit der erweiterten Sprechblase ausführen kann. Um unseren Code übersichtlich zu halten, zeige ich einfach jedes Mal einen Toast an, wenn der Benutzer die Aktionen "sendMessage" und "voiceCall" der Sprechblase auslöst.

Öffnen Sie Ihre BubbleActivity-Klasse und fügen Sie Folgendes hinzu:






























 import androidx.appcompat .app.AppCompatActivity;
android.os.Bundle importieren;
import android.widget.ImageButton;
android.widget.Toast importieren;
android.view.View importieren;

public class BubbleActivity erweitert AppCompatActivity implementiert View.OnClickListener {

   @Override
   protected void onCreate (Bundle savedInstanceState) {
       super.onCreate (savedInstanceState);
       setContentView (R.layout.activity_bubble);
       ImageButton voiceCall = (ImageButton) findViewById (R.id.voice_call);
       voiceCall.setOnClickListener (this);
       ImageButton sendMessage = (ImageButton) findViewById (R.id.send);
       sendMessage.setOnClickListener (this);
   }

   @Override
   public void onClick (View v) {
       switch (v.getId ()) {

           case R.id.voice_call:
               Toast.makeText (BubbleActivity.this, "Calling contact", Toast.LENGTH_SHORT) .show ();
               brechen;
           case R.id.send:
Toast.makeText (BubbleActivity.this, "Sending message", Toast.LENGTH_SHORT) .show ();
               brechen;
       }
   }
} 

Entwerfen des erweiterten Blasenlayouts

Nun müssen wir ein entsprechendes Layout für unsere BubbleActivity erstellen. Dieses Layout besteht aus:

  • Ein RecylerView. In einer realen Messaging-App wird hier die neu empfangene Nachricht sowie alle vorherigen Nachrichten angezeigt.
  • Ein EditText. Auf diese Weise kann der Benutzer seine Antwort direkt in die Blasenbenachrichtigung eingeben.
  • Zwei ImageButtons. Diese zeigen Symbole an, auf die der Benutzer tippen kann, um eine Textantwort zu senden oder die Person anzurufen, die diese Nachricht gesendet hat.

Erstellen Sie eine neue Layoutdatei mit dem Namen „activity_bubble“, indem Sie bei gedrückter Ctrl-Taste auf das Layoutverzeichnis Ihres Projekts klicken und dann auswählen "Neu> Layout-Ressourcendatei" in der Android Studio-Symbolleiste.

Öffnen Sie die Datei "activity_bubble.xml" und fügen Sie Folgendes hinzu:



       









       








       







           










           









           










      



      

Benutzeroberfläche mit mehreren Fenstern und Dokumenten: Aktualisierung des Manifests

Wenn Android BubbleActivity als erweiterte Blase erkennt, müssen wir unser Manifest öffnen und einige Änderungen an der Deklaration „BubbleActivity“ vornehmen.

1. Unterstützung für mehrere Fenster hinzufügen

Geben Sie zunächst an, dass BubbleActivity die Anzeige von mehreren Fenstern für Android unterstützt:

 android: resizeableActivity = "true" 

2. Enable allowEmbedded

Blasen werden in einem Container angezeigt, der zu einer anderen Aktivität gehört. Unsere nächste Aufgabe besteht darin, zu deklarieren, dass BubbleAtivity als eingebettetes untergeordnetes Element einer anderen Aktivität gestartet werden kann:

 android: allowEmbedded = "true" 

3 . Mehrere Instanzen zulassen

In manchen Fällen muss Ihre Anwendung mehrere Blasen desselben Typs anzeigen.

Da wir eine Chat-Anwendung erstellen, kann es vorkommen, dass der Benutzer mehrere Nachrichten von verschiedenen Personen gleichzeitig erhält. Um Verwirrung zu vermeiden, ist es wichtig, dass jede Konversation als eigene Sprechblase dargestellt wird, auch wenn mehrere Sprechblasen auf dem Bildschirm sichtbar sind.

Wenn in Ihrer Anwendung mehrere Sprechblasen desselben Typs angezeigt werden sollen, müssen mehrere Sprechblasen gestartet werden können Instanzen.

Um Ihrer App die Möglichkeit zu geben, mehrere Instanzen zu erstellen, fügen Sie Ihrer "BubbleActivity" -Deklaration Folgendes hinzu:

 android: documentLaunchMode = "always" 

Das abgeschlossene Manifest

Nachdem Sie alle Aktionen ausgeführt haben Über den Schritten sollte der Abschnitt "BubbleActivity" Ihres Manifests ungefähr so ​​aussehen:







Testen Ihrer Android Q-Blasen

Zum Testen Ihrer Blasenbenachrichtigungen benötigen Sie entweder ein physisches Gerät, auf dem die Android Q-Vorschau oder höher ausgeführt wird, oder ein Android Virtual Device (AVD), das zur Unterstützung von Android konfiguriert ist Q.

So erstellen Sie eine kompatible AVD:

  • Wählen Sie "Extras> AVD-Manager" in der Android Studio-Symbolleiste.
  • Wählen Sie "Virtuelles Gerät erstellen …".
  • Wählen Sie die Gerätedefinition aus, die Sie verwenden möchten. und klicken Sie dann auf "Weiter".
  • Wählen Sie im Bildschirm "Systemabbild auswählen" das neueste "Q" -Systemabbild aus. Wenn Sie Android Q noch nicht heruntergeladen haben, klicken Sie auf den zugehörigen Download-Link und warten Sie, bis das System-Image auf Ihren Computer heruntergeladen wurde.

 Laden Sie ein Android Q-System-Image herunter

  • Give Geben Sie Ihrem AVD einen Namen und klicken Sie dann auf „Fertig stellen“.

So testen Sie Ihre Anwendung:

  • Starten Sie Ihre App auf einem kompatiblen AVD- oder physischen Android-Gerät.
  • Klicken Sie auf die Schaltfläche „Blasenbenachrichtigung erstellen“ ein Wasserhahn. Auf dem Bildschirm sollte nun eine Blase angezeigt werden.
  • Klicken Sie auf das Blasensymbol, um es als erweiterte Blase anzuzeigen.
  • Wenn Sie dazu aufgefordert werden, erteilen Sie Ihrer Anwendung die Berechtigung zum Anzeigen von Blasen, indem Sie auf "Zulassen" tippen Es sollte ein Klick auf die Aktion "Anrufen" der Sprechblase und ein Toast auf "Kontakt anrufen" angezeigt werden.
  • Klicken Sie auf die Aktion "Antworten". Es sollte jetzt ein Toast mit dem Titel "Sending message" (Nachricht wird gesendet) angezeigt werden.

Sie können das fertige Projekt von GitHub herunterladen.

Erstellen automatisch erweiterter Sprechblasen

Derzeit werden alle Sprechblasen unserer Anwendung in einem reduzierten Zustand angezeigt erweitert, wenn der Benutzer mit ihnen interagiert. Es ist jedoch möglich, Blasen zu erstellen, die automatisch in ihrem erweiterten Status gestartet werden.

In der Regel sollten Sie eine Schaltfläche nur so konfigurieren, dass sie in einem erweiterten Status angezeigt wird, wenn der Benutzer eine Aktion ausführt, die direkt zu dieser Blase führt, z Klicken Sie auf die Schaltfläche, um ein neues Chatfenster zu öffnen oder ein neues Dokument zu erstellen.

Sie können eine erweiterte Blase erstellen, indem Sie Ihrem BubbleMetadata-Objekt setAutoExpandBubble (true) hinzufügen.

Beachten Sie nur, dass diese Blase nur in einem gepostet wird erweiterter Zustand, wenn die zugehörige Anwendung im Vordergrund steht. Wenn die App, die diese Blase erstellt hat, nicht im Vordergrund steht, wird die setAutoExpandBubble () -Methode vollständig ignoriert.

Im folgenden Snippet erklären wir, dass der Inhalt der Blase automatisch erweitert werden soll:









 Benachrichtigung .BubbleMetadata bubbleData =
       neue Notification.BubbleMetadata.Builder ()
               .setDesiredHeight (600)

// Füge die folgende Zeile hinzu //

               .setAutoExpandBubble (true)
               .setIcon (Icon.createWithResource (MainActivity.this, R.drawable.ic_message))
               .setIntent (bubbleIntent)
               .build (); 

Installieren Sie das aktualisierte Projekt auf Ihrem AVD- oder Android-Gerät, und tippen Sie auf die Schaltfläche "Blasenbenachrichtigung erstellen". Anstatt dass das Blasensymbol auf dem Bildschirm angezeigt wird, sollte Ihre Blase jetzt automatisch in ihrem erweiterten Zustand gestartet werden.

Optimale Nutzung von Blasen: Bewährte Vorgehensweisen

Wie bei jeder neuen Funktion werden Blasen mit eigenen bewährten Vorgehensweisen geliefert.

Beachten Sie beim Hinzufügen von Blasenbenachrichtigungen zu Ihren Android-Apps Folgendes:

1. Überfordern Sie den Benutzer nicht

Blasen beanspruchen eine erhebliche Menge an Bildschirmfläche und können unterbrechen, was auch immer der Benutzer gerade tut.

Wenn Sie den Benutzer mit Blasen bombardieren, ist dies im besten Fall der Fall Sie blockieren die Ausgabe von Blasen durch Ihre Anwendung und können im schlimmsten Fall sogar die App vollständig deinstallieren.

Um eine Entfremdung Ihrer Benutzer zu vermeiden, sollten Sie Blasenbenachrichtigungen nur für Ereignisse ausgeben, die wichtig genug sind, um die Berechtigung des Benutzers zu gewährleisten sofortige Aufmerksamkeit.

2. Fokus auf Einfachheit

Alle Prozesse, die von einer Blase gestartet werden, befinden sich im Container dieser Blase, der häufig erheblich kleiner als eine normale Aktivität sein kann.

Um eine gute Benutzererfahrung zu erzielen, sollten Sie die Versuchung vermeiden, Ihre Blase zu packen Blasen voller Informationen und Funktionen und stattdessen Blasen erstellen, die so leicht und einfach wie möglich sind.

3. Testen Sie Ihre Blasen als regelmäßige Benachrichtigungen.

Unter bestimmten Umständen werden Ihre Blasen dem Benutzer als Standardbenachrichtigung angezeigt, z. B. wenn das Gerät gesperrt ist oder die permanente Anzeige aktiv ist.

Um einen guten Benutzer sicherzustellen Unabhängig davon, wie Ihre Sprechblase dargestellt wird, sollten Sie testen, wie jede Ihrer Sprechblasen angezeigt wird und funktioniert, wenn sie als Sprechblasenbenachrichtigung und als reguläre Benachrichtigung angezeigt wird.

Zusammenfassung

In diesem Artikel Wir haben gesehen, wie Sie die Bubbles-Funktion von Android Q heute nutzen können. Im Verlauf dieses Artikels haben wir eine Anwendung erstellt, die bei Bedarf reduzierte und erweiterte Blasen auslöst und die erweiterte Blase mit Ansichten und benutzerdefinierten Aktionen auffüllt.

Welche anderen Android Q-Funktionen stehen Ihnen zur Verfügung? Ich freue mich darauf, es zu versuchen? Lass es uns in den Kommentaren unten wissen!

About AndroidWeltEditor

Check Also

An introduction to Android GPU Inspector

If you want your game or app to stand out in the Google Play Store, …

Leave a Reply

Your email address will not be published. Required fields are marked *