通知は、アプリが使用されていないときに、アプリ内のイベントに関する簡潔かつタイムリーな情報をドライバーに提供します。通知は、通知センターに表示することも、ディスプレイ上にヘッドアップ通知として表示することもできます。Android Automotive OS 用の通知を作成するには、他のデバイスの場合と同様、NotificationBuilder
API を使用します。ただし、ドライバーの安全を確保し、ドライバーの注意散漫を最小限に抑えるために、一部の API メソッドとクラスは制限されているか、異なる動作をしています。
車内通知の特徴
ドライバーが運転に集中できる安全な環境を提供するために、Android Automotive OS の通知は他のデバイスの通知と次の点が異なっています。
- シンプルなユーザー操作
- 運転状態に基づく UX の制限
シンプルなユーザー操作
ドライバーが道路に集中できるように、車内の通知には、次の機能を備えたシンプルなユーザー操作モデルが用意されています。
- 複雑な制御の排除
- 通知では、タップによる通知の展開、通知を長押しして追加オプションを表示する、スワイプの長さによる操作に基づくコントロールの使用など、複雑な制御を行うことはできません。
- 通知音
- 通知は、ヘッドアップ通知がトリガーされた場合にのみ音が鳴ります。
Android Automotive OS は、すべての車載対応メッセージ通知に再生ボタンとミュートボタンを自動的に追加します。
- 再生: ユーザーのデフォルトのデジタル アシスタント(Google アシスタントなど)や車両のデフォルトのテキスト読み上げシステムを使用して、ドライバーへの通知を読み上げます。
ミュート: 運転中は、会話内の今後のメッセージでヘッドアップ通知が表示されないようにします。ミュートにしている会話のメッセージ通知は、通知センターに表示されます。また、ドライバーは、通知センターから会話のミュートを解除することもできます。
- シンプルな通知表示オプション
RemoteViews
およびカスタム コンテンツ ビューはサポートされていません。また、以下の通知スタイルもサポートされていません。BigPictureStyle
BigTextStyle
InboxStyle
アプリがこれらの通知スタイルのいずれかを使用して Android Automotive OS に通知を送信した場合、要約文のみが表示されます。
- シンプルな通知チャンネル管理
Android Automotive OS は、通知チャンネルと関連する UI アフォーダンスをサポートしていないため、Automotive デバイスでリッチな管理タスクが発生する頻度を減らします。
運転状態に基づく UX の制限
Android Automotive OS には UX 制限エンジンが搭載されています。自動車メーカーはこのエンジンを使用することで、次の方法で車の運転状態に基づいて通知を制限できます。
- 特定の文字数で通知の文字列を切り捨てる
CATEGORY_MESSAGE
通知のメッセージ サマリーを非表示にする- 通知センターに表示できる通知の数を制限する
サポートされるリソースタイプ
Android Automotive OS のデフォルトでは、他のデバイスでの通知に使用できるリソースタイプの一部のみがサポートされます。たとえば、次のリソースタイプなどです。
- ドローアブル
- アイコン
- 画像
メッセージ通知機能の互換性要件
一貫性があり邪魔にならないユーザー エクスペリエンスを提供するため、Android Automotive OS 上でメッセージ通知機能を実現するには、特別な要件を満たす必要があります。
メッセージ通知機能は、以下の要件を満たす場合に「車載対応」と見なされます。
CATEGORY_MESSAGE
カテゴリに属します。Notification.MessagingStyle
スタイルを使用している。- 未読メッセージのみが含まれます。
次の要件を満たす既読マーキング
Action
があります。- セマンティック アクションが
Action.SEMANTIC_ACTION_MARK_AS_READ
に設定されている。 Action
は、起動時にユーザー インターフェースを表示しないことを示します。
- セマンティック アクションが
通知が返信
Action
を備えている場合、そのAction
が次の要件を満たしている。- セマンティック アクションが
Action.SEMANTIC_ACTION_REPLY
に設定されている。 Action
は、起動時にユーザー インターフェースを表示しないことを示します。Action
には 1 つのRemoteInput
が含まれます。
- セマンティック アクションが
通知センター
ほぼすべての通知は、ヘッドアップ通知としてトリガーされた場合でも、通知センターに表示されます。通知は、運転している間は通知センター内に残ります。
ドライバーは通知センター内の通知を操作できます。 ドライバーは、次のいずれか、または両方の方法で通知センターにアクセスできます(自動車メーカーによって異なります)。
- 他のデバイスの通知ドロワーと同じように、画面の上から下にスワイプします。
- システム インターフェースのボタンをタップする。
通知のグループ化
関連する通知は、他のデバイスの通知ドロワーと同様に、通知センターで自動的にグループ化されます。ドライバーが通知センター内でグループのサマリーをタップした場合、PendingIntent
が起動するのではなく、グループが展開され、そのグループ内の通知がすべて表示されます。
通知センターに表示されない通知
次の通知は通知センターに表示されません。
Media playback
通知。進行中のメディア再生に関する情報は Android Automotive OS によって収集され、ユーザー インターフェース内の専用の場所に表示されます。通知をメディア再生として認識するには、null 以外のトークンでsetMediaSession
を呼び出す必要があります。CATEGORY_NAVIGATION
のターンバイターン方式ナビ通知。- システム特権が付与されているアプリや、
IMPORTANCE_DEFAULT
よりも重要度が低いプラットフォーム キーで署名されているアプリのフォアグラウンド サービス通知。
ヘッドアップ通知
ヘッドアップ通知は画面上部に通知カードとして表示されます。 ヘッドアップ通知はドライバーの注意を引くため、情報が運転に不可欠で、時間的制約があり、実行可能な場合にのみトリガーしてください。ヘッドアップ通知をトリガーできるのは特定のカテゴリの通知に限られます。
自動車メーカーは、通知センターが開いているときにヘッドアップ通知の表示を許可するかどうかを決定できます。
アプリによるヘッドアップ通知のトリガー方法
ヘッドアップ通知をトリガーするための要件は、アプリにシステム権限があるかどうかによって異なります。
- システム特権を持つアプリとプラットフォーム鍵で署名されたアプリ
- 通知チャンネルの重要度を
IMPORTANCE_HIGH
以上に設定すると、アプリでヘッドアップ通知をトリガーできます。 - その他のすべてのアプリ
通知チャンネルの重要度を
IMPORTANCE_HIGH
以上に設定し、通知が次のいずれかのカテゴリに属していることを確認することで、ヘッドアップ通知をトリガーできます。
ヘッドアップ通知の有効期間
アプリがヘッドアップ通知をトリガーすると、その直後に通知が車の画面に表示されます。ドライバーが何も操作しないと、ヘッドアップ通知は 8 秒後に自動的に閉じます。ただし、次の場合を除きます。
特定の着信に対するヘッドアップ通知は非表示にできません。ヘッドアップ通知は、ドライバーが電話を受けるか、通話を終了するまで表示されます。非表示にできない着信用ヘッドアップ通知は、次の要件を満たしている必要があります。
CATEGORY_CALL
に属している- 全画面表示インテントを設定している
setOngoing()
メソッドによって継続的通知としてマーキングされている
アプリが 8 秒の期間内に通知を更新した場合、ヘッドアップ通知は継続します。
ヘッドアップ通知が閉じられると、CATEGORY_NAVIGATION
通知でない限り、通知は通知センターに一覧表示されます。
自動車向け Notification API の変更点と制限事項
このセクションでは、Android Automotive OS 上で Notification API を使用した場合に、動作が変更されるクラスや制限があるクラスについて、その変更内容の概要を示します。
Notification.Builder
表 1 と表 2 に、Notification.Builder
クラスの API の変更点と制限事項を示します。
表 1. Notification.Builder
のパブリック メソッドの変更点
パブリック メソッド | 効果 | 説明 | ||
---|---|---|---|---|
|
条件付き no-op | Notification.MessagingStyle 通知には、互換性要件で指定されているアクションを追加する必要があります。他のアクションを追加しても、通知ボタンとして表示されることはありません。 |
||
|
no-op | RemoteViews およびカスタム コンテンツ ビューはサポートされていません。 |
||
|
no-op | 通知バッジはサポートされていません。 | ||
| no-op | カウントダウン タイマーはサポートされていません。 | ||
setColorized() |
制約の変更 |
プラットフォームで署名されたアプリ: 構成可能。デフォルトで許可されます。 システム特権アプリ: プラットフォームによって構成されます。デフォルトでは許可されません。 その他すべてのアプリ: プラットフォームによって設定されます。デフォルトでは設定できません。 |
||
setFullScreenIntent() |
動作の変更 | インテントを自動で開始しません。 | ||
setLargeIcon() |
動作の変更 | 通知の右側に大きなアイコンが表示されます。 | ||
setLights() |
no-op | Android Automotive OS デバイスには LED インジケーター ライトがありません。 | ||
setOngoing() |
動作の変更 |
通知によってヘッドアップ通知もトリガーされる場合、動作が異なります。
|
no-op | プライベート モードはサポートされていません。 |
setSettingsText() |
no-op | 通知は、アプリ設定にリンクする機能をサポートしていません。 代わりに、ドライバーはアプリ経由でアプリ設定にアクセスします。 | ||
setTicker() |
no-op | ティッカー テキストはサポートされていません。 |
表 2: Notification.Builder
のネストクラスの変更点
ネストクラス | 効果 | 説明 |
---|---|---|
|
不使用 | 概要テキストのみが表示されます。これらのスタイルの詳細な通知はサポートされていません。 |
Notification.BubbleMetadata |
不使用 | ふきだしはサポートされていません。 |
Notification.MediaStyle |
非表示 | このスタイルの通知は非表示になります。Android Automotive OS は、メディアの通知および再生に関するユーザー インターフェースの操作を管理します。 |
Notification.MessagingStyle |
動作の変更 |
このスタイルの通知は、以下の点が異なります。
|
|
不使用 | エクステンダーはサポートされていません。 |
Notification.Action.Builder
表 3 に、Notification.Action.Builder
クラスの API の変更点と制限事項を示します。
表 3. Notification.Action.Builder
のパブリック メソッドの変更点
パブリック メソッド | 効果 | 説明 |
---|---|---|
public コンストラクタ | 動作の変更 | public コンストラクタで指定されたアイコンは無視されます。 |
addRemoteInput |
動作の変更 | ドライバーの注意散漫を最小限に抑えるため、Google アシスタントなどのデジタル アシスタントは、ユーザーへのメッセージへの応答を挿入します。ユーザーはメッセージを入力できません。 |
setAllowGeneratedReplies |
no-op | スマート リプライはサポートされていません。 |