对话通知和小部件

Android 11 添加了对按优先级和警报级别在通知阴影上自定义对话通知的行为和位置的支持,允许将对话标记为重要并在对话空间中启动对话特定气泡

基于这些 Android 11 功能,Android 12 提供了两个新的对话功能:

  • “设置”中的“最近对话”功能使用户可以自定义最近对话的通知行为,而无需等待通知。

  • 对话小部件功能使用户能够轻松地在主屏幕上打开聊天,快速查看最近的对话。

本文档描述了对话通知和小部件的实施、定制和验证方面。

对话通知概述

Android 11 引入了一个新的系统原语 Conversation,它由现有的共享快捷方式对象(随 Android 9 推出)表示。

对话原语可以按如下方式使用:

  • 通过Sharesheet (已在 Android 10 中)在整个系统的应用程序之间共享对话数据。

  • 用于驾驶气泡(Android 11 中的快捷方式)。参见图 1

  • 参与通知栏顶部的新对话空间(在 Android 11 中实现)。参见图 2

  • 用于创建对话小部件(在 Android 12 中实现)。

    conv_bubbles

    图 1:从通知抽屉中以气泡形式启动的通知

    conv_notification

    图 2:位于通知栏顶部的对话空间

除了链接到表示对话的快捷方式外,通知还使用MessagingStyle将对话的最后一条消息包含在对话空间中。

GMS 合作伙伴需要实施以下各项:

  • 一个新的对话空间作为通知栏顶部的一个单独部分。
  • 一种允许并支持对话特定气泡模式的通知样式。

实施对话的合作伙伴也需要实施重要对话。但是,对话的实施可以与类似性质的 OEM 概念保持一致。总体而言,合作伙伴可以自由地将对话部分与其特定的系统 UI 对齐。合作伙伴不必修改或实施 HAL/驱动程序/内核代码/扩展。

请参阅 AOSP 的 SystemUI 和 PeopleService 部分中的以下参考实现:

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/

验证

为确保您的功能版本按预期工作,请验证以下内容:

  1. 完全支持对话 API 的应用程序会在新部分中看到它们的通知,并且可以通过对话而不是通用NotificationChannel自定义这些通知。

  2. 对话特定的气泡正在工作。

要验证实现,请在通知包中使用以下测试:

  • CTS 测试。

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • CTS 验证程序测试。

    cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
    
    

对话小部件概述

在 Android 12 中,Conversation Widget 功能建立在 Android 11(如前一节所述)中创建的 Conversation 表示的基础上,允许应用为显示在 Conversation Widget 中的那些对话提供状态。

conv_widgets

图 3:对话小部件中显示的对话

Android 12 中的对话小部件功能通过允许用户在主屏幕上轻松打开聊天来促进连接。这些小部件是增强的快捷方式,允许用户有效地返回他们的对话,同时显示对话状态的片段。

合作伙伴必须执行以下操作:

  1. SystemUI 提供的小部件。
  2. 从小部件选择屏幕添加这些小部件的流程。
  3. 支持小部件调整大小如下:

实现对话小部件时请注意以下依赖项:

  • 合作伙伴不必修改或实现 HAL/驱动程序/内核代码。
  • Status API 允许应用程序将状态或可用性信息添加到对话和关联的小部件中,用于实现。
  • 新设备实施和升级实施的过程相同。
  • Conversation Widgets 功能依赖于 Android 12 中启动的新功能,该功能缓存最近看到的对话(例如来自通知)。后一个功能允许扩展用户可能添加到其主屏幕的对话列表。

请参阅 SystemUI 和 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/

定制

无法打开或关闭对话小部件功能。但是,只要满足 GMS 要求,合作伙伴就可以更改小部件模板的布局。

验证

为确保您的功能版本按预期工作,请验证以下内容:

  1. 在启动器上长按,可以通过小部件选择器添加新的对话小部件。 Widget 选择器 UI 参见图 4:

    widget_picker

    图 4:用于添加新对话小部件的小部件选择器 UI

  2. 从选定的对话向设备发送通知时,小部件会更新以反映这些通知。

  3. 在使用ConversationStatus API 将状态应用于该对话时,小部件会反映这些状态。

  4. 用户可以调整小部件的大小,小部件可以根据他们当前的启动器更改其大小。您的小部件布局必须适用于不同设备上的不同启动器大小以及调整小部件的大小。

要验证实现,请在通知包中使用以下测试:

  • API 表面的 CTS 测试 (PeopleManagerTest)。

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • GMS 要求的手动测试 - 对话。