会話の通知とウィジェット

Android 11では、優先度とアラートレベルによって、通知シェードでの会話通知の動作と配置をカスタマイズするためのサポートが追加され、会話を重要としてマークし、会話固有のバブルを会話スペースで起動できるようになります。

これらのAndroid11機能に基づいて、Android12は2つの新しい会話機能を提供します。

  • [設定]の[最近の会話]機能を使用すると、ユーザーは通知を待たずに最近の会話の通知動作をカスタマイズできます。

  • 会話ウィジェット機能を使用すると、ユーザーはホーム画面でチャットを簡単に開くことができ、最近の会話をすばやく表示できます。

このドキュメントでは、会話通知とウィジェットの実装、カスタマイズ、および検証の側面について説明します。

会話通知の概要

Android 11では、既存の共有ショートカットオブジェクト(Android 9で展開された)で表される新しいシステムプリミティブである会話が導入されています。

会話プリミティブは次のように使用できます。

  • シェアシート(すでに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. Conversation 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では、会話ウィジェット機能は、Android 11で作成された会話表現(前のセクションで説明)に基づいて、会話ウィジェットに表示される会話のステータスをアプリが提供できるようにします。

conv_widgets

図3:会話ウィジェットに表示される会話

Android 12の会話ウィジェット機能は、ユーザーがホーム画面でチャットを簡単に開くことができるようにすることで、接続を促進します。ウィジェットは、ユーザーが会話ステータスのスニペットを表示しながら効率的に会話に戻ることができるようにする拡張ショートカットです。

パートナーは以下を実装する必要があります。

  1. SystemUIが提供するウィジェット。
  2. ウィジェット選択画面からこれらのウィジェットを追加するフロー。
  3. 次のようにウィジェットのサイズ変更をサポートします。

会話ウィジェットを実装するときは、次の依存関係に注意してください。

  • パートナーは、HAL/ドライバー/カーネルコードを変更または実装する必要はありません。
  • アプリが会話と関連するウィジェットにステータスまたは可用性情報を追加できるようにするStatusAPIは、実装に使用されます。
  • プロセスは、新しいデバイスの実装とアップグレードの実装の両方で同じです。
  • 会話ウィジェット機能は、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. Launcherを長押しすると、ウィジェットピッカーを使用して会話用の新しい会話ウィジェットを追加できます。ウィジェットピッカーUIについては、図4を参照してください。

    widget_picker

    図4:新しい会話ウィジェットを追加するためのウィジェットピッカーUI

  2. 選択した会話からデバイスに通知を送信すると、ウィジェットが更新され、それらの通知が反映されます。

  3. ConversationStatus APIを使用してその会話にステータスを適用すると、ウィジェットはそれらのステータスを反映します。

  4. ユーザーはウィジェットのサイズを変更でき、ウィジェットは現在のランチャーに基づいてサイズを変更できます。ウィジェットのレイアウトは、さまざまなデバイスのさまざまなランチャーサイズや、ウィジェットのサイズ変更でうまく機能する必要があります。

実装を検証するには、通知パッケージで次のテストを使用します。

  • APIサーフェスのCTSテスト(PeopleManagerTest)。

    cts/tests/app/src/android/app/cts/NotificationManagerTest.java
    
  • GMS要件の手動テスト-会話。