對話通知和小部件

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 要求的手動測試 - 對話。