O Android 11 adiciona suporte à personalização do comportamento e do posicionamento de notificações de conversa na aba de notificações por nível de prioridade e alerta, permitindo que as conversas sejam marcadas como importantes e que os balões específicos da conversa sejam iniciados no espaço de conversa.
Com base nesses recursos do Android 11, o Android 12 oferece dois novos recursos de conversa:
O recurso "Conversas recentes" nas Configurações permite que os usuários personalizem o comportamento de notificação de conversas recentes sem esperar por uma notificação.
O recurso de widget de conversa permite que os usuários abram facilmente os chats na tela inicial, mostrando uma visualização rápida das conversas recentes.
Este documento descreve os aspectos de implementação, personalização e validação das notificações de conversa e dos widgets.
Visão geral das notificações de conversa
O Android 11 apresenta uma nova primitiva do sistema, a conversa, que é representada pelo objeto de atalho de compartilhamento que foi lançado com o Android 9.
A primitiva de conversas pode ser usada da seguinte maneira:
Para compartilhar dados de conversas entre os apps em todo o sistema usando o Sharesheet (já no Android 10).
Para direcionar balões(atalhos no Android 11). Veja a Figura 1.
Para participar do novo espaço de conversa na parte de cima da sombra de notificação (implementado no Android 11). Consulte a Figura 2.
Para criar widgets de conversa (implementados no Android 12).
Figura 1:notificação iniciada como balão na gaveta de notificações
Figura 2:espaço de conversa localizado na parte de cima da barra de notificações
Além de vincular ao atalho que representa a conversa, a notificação também usa MessagingStyle para incluir a última mensagem da conversa no espaço de conversa.
Os parceiros do GMS precisam implementar o seguinte:
- Um novo espaço de conversas como uma seção separada na parte de cima da aba de notificações.
- Um estilo de notificação que permite e oferece suporte ao padrão de balão específico da conversa.
Os parceiros que implementam as conversas também precisam implementar as conversas importantes. No entanto, a implementação das Conversas pode ser alinhada a conceitos de OEM de natureza semelhante. No geral, os parceiros têm liberdade para alinhar a seção de conversa com a IU do sistema específica. O parceiro não precisa modificar ou implementar o código/extensões do HAL/driver/kernel.
Consulte a implementação de referência a seguir nas seções SystemUI e PeopleService no 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/
Validação
Para garantir que sua versão do recurso funcione conforme o esperado, verifique o seguinte:
Os apps que oferecem suporte total à API Conversation veem as notificações na nova seção e podem personalizá-las por conversa em vez de pelo NotificationChannel genérico.
Os balões específicos da conversa estão funcionando.
Para validar a implementação, use os seguintes testes no pacote de notificação:
Testes CTS.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Testes do CTS Verifier.
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
Visão geral dos widgets de conversa
No Android 12, o recurso de widget de conversa é baseado nas representações de conversa criadas no Android 11 (conforme descrito na seção anterior), permitindo que os apps forneçam status para as conversas exibidas nos widgets de conversa.
Figura 3. Conversas exibidas em widgets de conversa.
O recurso de widget de conversa no Android 12 promove a conexão, permitindo que os usuários abram facilmente as conversas na tela inicial. Os widgets são atalhos aprimorados que permitem que os usuários retornem às conversas de maneira eficiente enquanto mostram snippets dos status.
O parceiro precisa implementar o seguinte:
- Um widget fornecido pelo SystemUI.
- Um fluxo para adicionar esses widgets na tela de seleção de widgets.
- Compatibilidade com redimensionamento de widgets da seguinte maneira:
- Use
onAppWidgetOptionsChanged()
para mudar o layout para um layout de tamanho melhor quando o usuário mudar o tamanho do layout ou girar para o modo paisagem. - Use
maxResizeHeight
,maxResizeWidth
,minWidth
,minHeight
,minResizeWidth
,minResizeHeight
para vincular corretamente as mudanças de tamanho do widget.
- Use
Considere as seguintes dependências ao implementar os widgets de conversa:
- O parceiro não precisa modificar nem implementar o código de HAL/driver/kernel.
- A API Status, que permite que os apps adicionem informações de status ou disponibilidade a uma conversa e ao widget associado, é usada para implementação.
- O processo é o mesmo para implementações de novos dispositivos e implementações de upgrade.
- O recurso de widgets de conversa depende de um novo recurso lançado no Android 12, que armazena em cache conversas vistas recentemente (de notificações, por exemplo). Esse último recurso permite expandir a lista de conversas que um usuário pode adicionar à tela inicial.
Consulte a seguinte implementação de referência nos arquivos SystemUI e 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/
Personalização
O recurso de widgets de conversa não pode ser ativado ou desativado. No entanto, um parceiro pode mudar os layouts dos modelos de widgets, desde que os requisitos do GMS sejam atendidos.
Validação
Para garantir que sua versão do recurso funcione conforme o esperado, verifique o seguinte:
Ao tocar e segurar no Launcher, um novo widget de conversa pode ser adicionado pelo seletor de widgets. Consulte a Figura 4 para conferir a interface do seletor de widgets:
Figura 4:interface do seletor de widgets para adicionar um novo widget de conversa
Ao enviar notificações para o dispositivo da conversa selecionada, o widget é atualizado para refletir essas notificações.
Ao aplicar status a essa conversa usando a API
ConversationStatus
, o widget reflete esses status.Os usuários podem redimensionar widgets, e os widgets podem mudar de tamanho com base no iniciador atual. Seus layouts de widget precisam funcionar bem com diferentes tamanhos de início em diferentes dispositivos e no redimensionamento do widget.
Para validar a implementação, use os seguintes testes no pacote de notificação:
Testes CTS (PeopleManagerTest) para as plataformas da API.
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
Testes manuais para o requisito do GMS: conversas.