Android 11 では、通知シェードでの会話通知の動作と配置を、優先度とアラートレベルごとにカスタマイズできるようになりました。これにより、会話に重要マークを付けて、会話固有のバブルを会話スペースに表示できるようになりました。
これらの Android 11 の機能を土台にして、Android 12 には 2 つの新しい会話機能が用意されています。
設定画面の「最近の会話」機能を使用すると、通知を待たずに最近の会話の通知動作をカスタマイズできます。
会話ウィジェット機能を使用すると、ホーム画面でチャットを簡単に開いて、最近の会話をすぐに確認できます。
このドキュメントでは、会話の通知とウィジェットの実装、カスタマイズ、検証について説明します。
会話通知の概要
Android 11 では、既存の共有ショートカット オブジェクト(Android 9 でリリースされたもの)によって表現される、会話という新しいシステム プリミティブが導入されました。
会話プリミティブは以下の目的で使用できます。
Sharesheet(Android 10 に導入済み)を通じてシステム全体のアプリ間で会話データを共有する。
通知シェード(Android 11 に実装)の一番上にある新しい会話スペースに参加する。図 2 を参照してください。
会話ウィジェット(Android 12 に実装)を作成する。
図 1: 通知ドロワーからバブルとして起動される通知
図 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/
検証
機能が意図したとおりに動作することを確認するには、以下の点を検証します。
会話 API を完全にサポートしているアプリで、新しいセクションに通知が表示され、この通知が一般的な NotificationChannel ではなく会話ごとにカスタマイズできる。
会話固有のバブルが機能している。
実装を検証するには、通知パッケージで以下のテストを使用します。
CTS テスト
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
CTS 検証ツールによるテスト
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/
会話ウィジェットの概要
Android 12 の会話ウィジェット機能は、Android 11 で導入された会話の表示方法(前のセクションの説明を参照)をベースに、会話のステータスをアプリが提供できるようにすることで、会話ウィジェットに表示できるようにしたものです。
図 3: 会話ウィジェットに表示される会話
Android 12 の会話ウィジェット機能は、ホーム画面でチャットを簡単に開けるようにすることで、つながりを促進します。このウィジェットは拡張ショートカットであり、会話ステータスのスニペットを表示しながら、ユーザーが効率的に会話に復帰できるようにします。
パートナー様には以下を実装していただく必要があります。
- SystemUI によって提供されるウィジェット。
- ウィジェット選択画面からこれらのウィジェットを追加するフロー。
- 以下のようなウィジェットのサイズ変更のサポート。
onAppWidgetOptionsChanged()
を使用して、ユーザーがレイアウト サイズの変更、または横向きへの回転を行ったときに、レイアウトをより適切なレイアウトに変更する。maxResizeHeight
、maxResizeWidth
、minWidth
、minHeight
、minResizeWidth
、minResizeHeight
を使用して、ウィジェットのサイズ変更を適切に制限する。
会話ウィジェットを実装する際には、以下の依存関係にご注意ください。
- パートナー様で、HAL、ドライバ、カーネルのコードの変更や実装をしていただく必要はありません。
- アプリで会話と関連するウィジェットにステータスまたは稼働情報を追加できるようにするステータス API が実装に使用されます。
- このプロセスは、新しいデバイスの実装とアップグレードの実装のどちらでも同じです。
- 会話ウィジェット機能は、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 の要件が満たされている限り、パートナー様でウィジェット テンプレートのレイアウトを変更していただくことは可能です。
検証
機能が意図したとおりに動作することを確認するには、以下の点を検証します。
ランチャーを長押しすると、ウィジェット選択ツールを使って会話用の新しい会話ウィジェットを追加できます。図 4 のウィジェット選択ツールの UI をご覧ください。
図 4: 新しい会話ウィジェットを追加するためのウィジェット選択ツール UI
選択した会話からデバイスに通知を送信すると、ウィジェットは通知を反映するように更新されます。
ConversationStatus
API を使用してその会話にステータスを適用すると、ウィジェットにはそのステータスが反映されます。ユーザーはウィジェットのサイズを変更でき、ウィジェットは現在のランチャーに基づいてサイズを変更できます。ウィジェットのレイアウトは、さまざまなデバイスのさまざまなランチャー サイズでも、またウィジェットのサイズが変更されたときにも、適切に機能する必要があります。
実装を検証するには、通知パッケージで以下のテストを使用します。
API サーフェスの CTS テスト(PeopleManagerTest)
cts/tests/app/src/android/app/cts/NotificationManagerTest.java
GMS 要件の手動テスト - 会話