Android 11 umożliwia dostosowywanie zachowania i umieszczania powiadomień o rozmowach w panelu powiadomień na podstawie priorytetu i poziomu alertu. Dzięki temu rozmowy można oznaczać jako ważne, a specyficzne dla nich bąbelki będą wyświetlane w przestrzeni rozmowy.
Bazując na funkcjach Androida 11, Android 12 oferuje 2 nowe funkcje rozmów:
Funkcja Ostatnie rozmowy w Ustawieniach umożliwia użytkownikom dostosowywanie sposobu wyświetlania powiadomień o ostatnich rozmowach bez konieczności czekania na powiadomienie.
Widżet rozmów umożliwia użytkownikom łatwe otwieranie czatów na ekranie głównym oraz szybkie przeglądanie ostatnich rozmów.
Dokument ten zawiera informacje o wdrożeniu, dostosowywaniu i weryfikacji powiadomień i widżetów dotyczących rozmów.
Omówienie powiadomień o rozmowach
Android 11 wprowadza nowy element systemu – rozmowę, która jest reprezentowana przez istniejący obiekt skrótu udostępniania (wprowadzony w Androidzie 9).
Element Conversation można wykorzystać w taki sposób:
Aby udostępniać dane rozmów między aplikacjami w całym systemie za pomocą panelu udostępniania (dostępnego już w Androidzie 10).
Aby korzystać z nowego pokoju rozmów w panelu powiadomień (wprowadzonego w Androidzie 11). Patrz rysunek 2.
Służy do tworzenia widżetów rozmów (zaimplementowanych w Androidzie 12).
Rysunek 1. Powiadomienia wyświetlane w postaci dymka z panelu powiadomień
Rysunek 2. Obszar rozmowy znajdujący się u góry obszaru powiadomień
Oprócz linku do skrótu reprezentującego rozmowę powiadomienie wykorzystuje również MessagingStyle, aby uwzględnić ostatnią wiadomość z rozmowy w pokoju rozmowy.
Partnerzy GMS muszą wdrożyć:
- nowy Pokój rozmów jako osobna sekcja u góry obszaru powiadomień;
- Styl powiadomienia, który umożliwia i obsługuje wzór okienka dla konkretnej rozmowy.
Partnerzy, którzy stosują funkcję rozmów, muszą też wdrożyć funkcję Ważne rozmowy. Implementacja rozmów może jednak być dopasowana do koncepcji OEM o podobnej charakterystyce. Ogólnie partnerzy mogą swobodnie dopasować sekcję rozmowy do konkretnego interfejsu systemu. Partner nie musi modyfikować ani wdrażać kodu HAL, sterownika, jądra lub rozszerzeń.
Zapoznaj się z 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 upewnić się, że Twoja wersja funkcji działa zgodnie z oczekiwaniami, sprawdź te kwestie:
Aplikacje, które w pełni obsługują interfejs Conversation API, widzą swoje powiadomienia w nowej sekcji. Mogą je dostosowywać za pomocą rozmów, a nie przy użyciu ogólnego interfejsu notificationChannel.
Działają dymki z informacjami o rozmowie.
Aby sprawdzić implementację, użyj tych testów w pakiecie powiadomień:
testów CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Testy 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 opiera się na prezentacjach rozmów utworzonych w Androidzie 11 (jak opisano w poprzedniej sekcji), umożliwiając aplikacjom podawanie stanu rozmów wyświetlanych w widżetach rozmów.
Rysunek 3. Rozmowy wyświetlane w widżetach rozmów
Widżet rozmowy w Androidzie 12 zachęca do nawiązywania kontaktów, ponieważ umożliwia łatwe otwieranie czatów na ekranie głównym. Te widżety to ulepszone skróty, które umożliwiają użytkownikom szybki powrót do rozmów, a także wyświetlają fragmenty ich stanu.
Partner musi wdrożyć te elementy:
- Widżet udostępniany przez SystemUI.
- Procedura dodawania widżetów z ekranu wyboru widżetów.
- Obsługa zmiany rozmiaru widżetu:
- Użyj elementu
onAppWidgetOptionsChanged()
, aby zmienić układ na taki, który lepiej pasuje do danego rozmiaru, gdy użytkownik zmieni rozmiar układu lub obróci ekran w układ poziomy. - Aby prawidłowo ograniczyć zmiany rozmiaru widżetu, użyj wartości
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
iminResizeHeight
.
- Użyj elementu
Podczas implementowania widżetów konwersacyjnych pamiętaj o tych zależnościach:
- Partner nie musi modyfikować ani wdrażać kodu HAL, sterownika ani jądra.
- Do implementacji używany jest interfejs Status API, który umożliwia aplikacjom dodawanie do rozmowy informacji o stanie lub dostępności oraz powiązany widżet.
- Ten proces jest taki sam zarówno w przypadku implementacji nowych urządzeń, jak i uaktualniania.
- Funkcja widżetów rozmów jest zależna od nowej funkcji wprowadzonej w Androidzie 12, która przechowuje w pamięci podręcznej ostatnio wyświetlane rozmowy (np. z powiadomień). Ta funkcja umożliwia rozszerzenie listy rozmów, które użytkownik może dodać do ekranu głównego.
Zapoznaj się z 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 w konwersacji nie można włączyć ani wyłączyć. 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ź te kwestie:
Po długim naciśnięciu Launchera można dodać nowy widżet rozmowy za pomocą selektora widżetów. Interfejs selektora widżetów:
Rysunek 4. UI selektora widżetów do dodawania nowych widżetów rozmów
Przy wysyłaniu na urządzenie powiadomień z wybranej rozmowy widżet jest aktualizowany tak, aby odzwierciedlać te powiadomienia.
Po zastosowaniu stanów do tej rozmowy za pomocą interfejsu
ConversationStatus
API widżet odzwierciedla te stany.Użytkownicy mogą zmieniać rozmiar widżetów i widżetów w zależności od bieżącego Menu z aplikacjami. Układy widżetów muszą dobrze działać z różnymi rozmiarami Menu z aplikacjami na różnych urządzeniach i ze zmianą rozmiaru widżetu.
Aby sprawdzić implementację, użyj tych testów w pakiecie powiadomień:
testy CTS (PeopleManagerTest) interfejsu API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Ręczne testy wymagań dotyczących GMS – rozmowy.