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 rozszerza te funkcje Androida 11 o 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. 
- Widżet 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
W Androidzie 11 wprowadzono nowy element systemowy, czyli obiekt skrótu do udostępniania (wprowadzony w Androidzie 9), który reprezentuje rozmowę.
Element Conversations może być używany w ten sposób:
- Udostępnianie danych z Konwersacji między aplikacjami w systemie za pomocą arkusza udostępniania (dostępnego już w Androidzie 10). 
- W przypadku dymków(skrótów w Androidzie 11) podczas jazdy. 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 rozmowy (zostały one wprowadzone w Androidzie 12).  - Ilustracja 1. Powiadomienie uruchamiane jako dymek z panelu powiadomień  - Rysunek 2. Miejsce na rozmowy u góry obszaru powiadomień 
Oprócz linku do skrótu reprezentującego rozmowę powiadomienie używa też MessagingStyle, aby uwzględnić ostatnią wiadomość z rozmowy w przestrzeni Rozmowa.
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 specyficzny dla rozmowy.
Partnerzy, którzy wdrażają rozmowy, muszą też wdrożyć 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 zgodnie z oczekiwaniami, sprawdź, czy:
- Aplikacje, które w pełni obsługują interfejs Conversation API, widzą powiadomienia w nowej sekcji i mogą dostosowywać te powiadomienia według rozmowy, a nie według ogólnego NotificationChannel. 
- Dymki w określonych rozmowach działają. 
Aby sprawdzić implementację, użyj tych testów w pakiecie powiadomień:
- testy CTS, - cts/tests/app/src/android/app/cts/NotificationManagerTest.java
- Testy weryfikatora CTS. - cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Omówienie widżetów rozmów
W Androidzie 12 funkcja widżetu rozmowy wykorzystuje reprezentacje rozmów utworzone w Androidzie 11 (zgodnie z opisem w poprzedniej sekcji), umożliwiając 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 stanów rozmów.
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żetów:- 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świetlone 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 zgodnie z oczekiwaniami, sprawdź, czy:
- Po długim naciśnięciu Launchera w wybieraku widżetów można dodać nowy widżet rozmowy. Interfejs selektora widżetów znajdziesz na rysunku 4:   - Ilustracja 4. Interfejs wyboru widżetów do dodawania 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 podczas zmiany rozmiaru widżetu. 
Aby sprawdzić implementację, użyj tych testów w pakiecie powiadomień:
- Testy CTS (PeopleManagerTest) dla platform interfejsu API. - cts/tests/app/src/android/app/cts/NotificationManagerTest.java
- Testy ręczne dotyczące wymagań GMS – rozmowy. 
