Android 11 umożliwia dostosowywanie zachowania i umiejscowienia powiadomień o rozmowach na panelu powiadomień według priorytetu i poziomu alertu. Dzięki temu rozmowy można oznaczać jako ważne i uruchamiać w przestrzeni rozmowy dymki dotyczące konkretnych rozmów.
Android 12, który bazuje na tych funkcjach Androida 11, oferuje 2 nowe funkcje rozmów:
Funkcja Ostatnie rozmowy w Ustawieniach umożliwia użytkownikom dostosowywanie działania powiadomień dotyczących ostatnich rozmów bez czekania na powiadomienie.
Funkcja widżetu rozmów umożliwia użytkownikom łatwe otwieranie czatów na ekranie głównym, co pozwala szybko przeglądać ostatnie rozmowy.
W tym dokumencie opisujemy aspekty implementacji, dostosowywania i weryfikacji powiadomień i widżetów dotyczących rozmów.
Omówienie powiadomień w rozmowach
Android 11 wprowadza nowy element systemowy, czyli konwersację, która jest reprezentowana przez istniejący obiekt skrótu do udostępniania (wprowadzony w Androidzie 9).
Element Conversations może być używany w ten sposób:
Udostępnianie danych z aplikacji do obsługi rozmów między aplikacjami w systemie za pomocą arkusza udostępniania (dostępnego już w Androidzie 10).
Do jazdy w wyskakujących okienkach(skrótach w Androidzie 11). Zobacz rysunek 1.
Aby uczestniczyć w nowym pokoju rozmów u góry panelu powiadomień (wprowadzonym w Androidzie 11). Zobacz rysunek 2.
Do tworzenia widżetów rozmów (wdrożonych w Androidzie 12).

Ilustracja 1. Powiadomienie uruchamiane jako dymek z panelu powiadomień

Ilustracja 2. Przestrzeń do rozmów u góry obszaru powiadomień
Oprócz linku do skrótu reprezentującego rozmowę powiadomienie korzysta też z MessagingStyle, aby uwzględnić ostatnią wiadomość z rozmowy w przestrzeni Rozmowy.
Partnerzy GMS muszą wdrożyć te funkcje:
- Nowy pokój do rozmów jako osobna sekcja u góry obszaru powiadomień.
- Styl powiadomień, który umożliwia i obsługuje wzorzec dymków w określonej rozmowie.
Partnerzy, którzy wdrażają funkcję Rozmowy, muszą też wdrożyć funkcję Ważne rozmowy. Wdrożenie funkcji Rozmowy może być jednak zgodne z koncepcjami OEM o podobnym charakterze. Ogólnie rzecz biorąc, partnerzy mogą dostosować sekcję rozmowy do swojego interfejsu systemu. Partner nie musi modyfikować ani wdrażać kodu HAL/sterownika/jądra/rozszerzeń.
Zobacz tę implementację referencyjną w sekcjach SystemUI i PeopleService w AOSP:
frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/
Weryfikacja
Aby mieć pewność, że Twoja wersja funkcji działa prawidłowo, sprawdź, czy:
Aplikacje, które w pełni obsługują interfejs Conversation API, wyświetlają powiadomienia w nowej sekcji i mogą dostosowywać te powiadomienia według rozmowy, a nie według ogólnego NotificationChannel.
Dymki dotyczące konkretnych rozmów działają.
Aby sprawdzić wdrożenie, użyj tych testów w pakiecie powiadomień:
testy CTS,
cts/tests/app/src/android/app/cts/NotificationManagerTest.javatesty CTS Verifier.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Omówienie widżetów rozmów
W Androidzie 12 funkcja widżetu rozmowy jest rozszerzeniem reprezentacji rozmów utworzonych w Androidzie 11 (jak opisano w poprzedniej sekcji), ponieważ umożliwia aplikacjom podawanie stanu tych rozmów, które są wyświetlane w widżetach rozmowy.
Ilustracja 3. Rozmowy wyświetlane w widżetach rozmów
Funkcja widżetu do rozmów w Androidzie 12 ułatwia kontaktowanie się z innymi, ponieważ pozwala użytkownikom łatwo otwierać czaty na ekranie głównym. Widżety to ulepszone skróty, które umożliwiają użytkownikom szybki powrót do rozmów, a jednocześnie wyświetlają fragmenty stanu rozmowy.
Partner musi wdrożyć te elementy:
- Widżet dostarczony przez SystemUI.
- Procedura dodawania tych widżetów na ekranie wyboru widżetów.
- Obsługa zmiany rozmiaru widżetu:
- Użyj
onAppWidgetOptionsChanged(), aby zmienić układ na lepiej dopasowany, gdy użytkownik zmieni rozmiar układu lub obróci urządzenie do orientacji poziomej. - Użyj
maxResizeHeight,maxResizeWidth,minWidth,minHeight,minResizeWidth,minResizeHeight, aby prawidłowo ograniczyć zmiany rozmiaru widżetu.
- Użyj
Podczas wdrażania widżetów do rozmów pamiętaj o tych zależnościach:
- Partner nie musi modyfikować ani wdrażać kodu HAL/sterownika/jądra.
- Do wdrożenia używany jest interfejs Status API, który umożliwia aplikacjom dodawanie informacji o stanie lub dostępności do rozmowy i powiązanego z nią widżetu.
- Proces jest taki sam w przypadku wdrożeń na nowych urządzeniach i wdrożeń aktualizacji.
- Funkcja widżetów rozmów jest zależna od nowej funkcji, która zostanie wprowadzona w Androidzie 12 i która buforuje ostatnio wyświetlane rozmowy (np. z powiadomień). Ta ostatnia funkcja pozwala rozszerzyć listę rozmów, które użytkownik może dodać do ekranu głównego.
Zapoznaj się z tą implementacją referencyjną w plikach SystemUI i Launcher3:
frameworks/base/packages/SystemUI/src/com/android/systemui/people/
frameworks/base/core/java/android/app/people/
frameworks/base/services/people/java/com/android/server/people/
Dostosowywanie
Funkcji widżetów rozmów nie można włączać ani wyłączać. Partner może jednak zmieniać układy szablonów widżetów, o ile spełnia wymagania GMS.
Weryfikacja
Aby mieć pewność, że Twoja wersja funkcji działa prawidłowo, sprawdź, czy:
Po naciśnięciu i przytrzymaniu ikony Launchera w selektorze widżetów można dodać nowy widżet rozmowy. Interfejs selektora widżetów pokazano na rysunku 4:
Ilustracja 4. Interfejs selektora widżetów umożliwiający dodanie nowego widżetu rozmów
Po wysłaniu powiadomień na urządzenie z wybranej rozmowy widżet zostanie zaktualizowany, aby odzwierciedlać te powiadomienia.
Po zastosowaniu stanów do tej rozmowy za pomocą interfejsu API
ConversationStatuswidżet odzwierciedla te stany.Użytkownicy mogą zmieniać rozmiar widżetów, a widżety mogą zmieniać rozmiar w zależności od bieżącego programu uruchamiającego. Układy widżetów muszą dobrze działać w przypadku różnych rozmiarów Launchera na różnych urządzeniach i przy zmianie rozmiaru widżetu.
Aby sprawdzić wdrożenie, użyj tych testów w pakiecie powiadomień:
Testy CTS (PeopleManagerTest) dla interfejsów API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.javaTesty ręczne dotyczące wymagań GMS – rozmowy.