Android Automotive OS 上の通知

通知は、アプリが使用されていないときに、アプリ内のイベントに関する簡潔かつタイムリーな情報をドライバーに提供します。通知は、 通知センターに表示することも、ディスプレイ上に ヘッドアップ通知として表示することもできます。Android Automotive OS 用の通知を作成するには、他のデバイスで使用するのと同じ NotificationBuilder API を使用します。ただし、ドライバーの安全を確保し、 気を散らすことを最小限に抑えるために、一部の API メソッドとクラスは制限されているか、動作が 異なります。

車内通知の特徴

ドライバーが運転に集中できる安全な環境を提供するために、Android Automotive OS の通知は他のデバイスの通知と次の点が異なっています。

  • シンプルなユーザー操作
  • 運転状態に基づく UX の制限

シンプルなユーザー インタラクション

ドライバーが運転に集中できるようにするために、車内通知には以下の特長を備えたシンプルなユーザー インタラクション モデルが採用されています。

複雑な制御の排除
通知では、タップによる通知の展開、通知の長押しによる追加オプションの表示、スワイプの長さに基づく制御の使用といった複雑な操作を行うことができません。
通知音
ヘッドアップ通知をトリガーする場合に限り、通知音が鳴ります。
メッセージ通知用の再生ボタンとミュートボタンの自動追加

Android Automotive OS は、すべての 車載対応メッセージ通知機能に対して、再生 ボタンとミュート ボタンを自動的に追加します。

  • 再生: ユーザーのデフォルト デジタル アシスタント(Gemini や Google アシスタントなど)または自動車のデフォルト テキスト読み上げシステムを使用して、ドライバーに対して通知を読み上げます。
  • ミュート: これから運転している間は、対象の会話内に新しいメッセージがあっても、ヘッドアップ通知を表示しないようにします。ミュートにしている会話のメッセージ通知は、通知センターに表示されます。また、ドライバーは、通知センターから会話のミュートを解除することもできます。

シンプルな通知表示オプション

RemoteViews およびカスタム コンテンツ ビューは対象外です。また、次の通知スタイルはサポートされていません。

アプリがこれらの通知スタイルのいずれかを使用して Android Automotive OS に通知を送信した場合、要約文のみが表示されます。

シンプルな通知チャンネル管理

Android Automotive OS は、Automotive デバイスにおけるリッチな管理タスクの使用を抑えるために、通知チャンネルとそれに関連する UI アフォーダンスをサポートしていません。

運転状態に基づく 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 は、再生中のメディアに関する情報を収集し、ユーザー インターフェースの専用の場所に表示します。システムが通知をメディア再生として認識するには、setMediaSession を null 以外のトークンを使用して呼び出す必要があります。
  • CATEGORY_NAVIGATION のターンバイターン方式ナビ通知。
  • システム特権が付与されているアプリや、 重要度が IMPORTANCE_DEFAULTよりも低いプラットフォーム キーで署名されているアプリのフォアグラウンド サービス通知。

ヘッドアップ通知

ヘッドアップ通知は画面上部に通知カードとして表示されます。 ヘッドアップ通知はドライバーの注意を引くため、トリガーするのは、運転上重要な情報で、時間的制約があり、実用的な場合に限るようにしてください。ヘッドアップ通知をトリガーできるのは特定のカテゴリの通知に限られます。

自動車メーカーは、通知センターが開いているときにヘッドアップ通知の表示を許可するかどうかを決定できます。

アプリによるヘッドアップ通知のトリガー方法

ヘッドアップ通知のトリガー要件は、アプリがシステム特権を持っているかどうかによって異なります。

システム特権が付与されているアプリおよびプラットフォーム キーで署名されているアプリ
通知チャンネルの重要度を IMPORTANCE_HIGH 以上に設定することによって、ヘッドアップ通知をトリガーできます。
その他のすべてのアプリ

通知チャンネルの重要度を IMPORTANCE_HIGH 以上に設定し、通知が次のいずれかのカテゴリに属していることを確認することで、ヘッドアップ通知をトリガーできます。

ヘッドアップ通知の有効期間

アプリがヘッドアップ通知をトリガーすると、その直後に通知が車の画面に表示されます。ドライバーが何も操作しない場合、ヘッドアップ通知は 8 秒後に自動的に非表示になります。ただし、次の場合は除きます。

  • 特定の着信に対するヘッドアップ通知は非表示にできません。ヘッドアップ通知は、ドライバーが電話を受けるまで、または通話が終了するまで表示され続けます。非表示にできない着信用ヘッドアップ通知は、次の要件を満たしている必要があります。

  • アプリが 通知を更新 すると、ヘッドアップ通知は表示状態を継続します。

非表示になったヘッドアップ通知は、 通知センター内でリスト表示されます。ただし、CATEGORY_NAVIGATION通知の場合を除きます。

自動車向け Notification API の変更点と制限事項

このセクションでは、Android Automotive OS 上で Notification API を使用した場合に、動作が変更されるクラスや制限があるクラスについて、その変更内容の概要を示します。

Notification.Builder

表 1 と表 2 に、 Notification.Builder クラスの API の変更点と制限事項を示します。

表 1. Notification.Builder のパブリック メソッドの変更点

パブリック メソッド 効果 説明

addAction()

条件付き no-op Notification.MessagingStyle 通知には、 互換性要件で指定されている アクションを追加する必要があります。追加されたアクションは通知ボタンとしてレンダリングされません。

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

操作なし RemoteViews およびカスタム コンテンツ ビューはサポートされていません。

setBadgeIconType()

setNumber()

no-op 通知バッジはサポートされていません。

setChronometerCountDown()

setUsesChronometer()

no-op カウントダウン タイマーはサポートされていません。
setColorized() 制約の変更

プラットフォームで署名されたアプリ: 設定可能( デフォルトで可能)。

システム特権が付与されたアプリ: プラットフォームによって設定されます( デフォルトでは設定不可)。

その他すべてのアプリ: プラットフォームによって設定されます(デフォルトでは 設定不可)。

setFullScreenIntent() 動作の変更 インテントを自動で開始しません。
setLargeIcon() 動作の変更 通知の右側に大きいアイコンが表示されます。
setLights() 操作なし Android Automotive OS デバイスには LED インジケーター ライトがありません。
setOngoing() 動作の変更

通知が ヘッドアップ通知もトリガーする場合、動作が異なります。

setOngoing() は、着信に対するヘッドアップ通知の場合にのみ、ヘッドアップ 通知を非表示にできないようにします。非表示にできない 着信用ヘッドアップ通知は、定義された要件を満たしている必要があります

ドライバーは、他のすべてのタイプのヘッドアップ通知を非表示にできます。

setPublicVersion()

setVisibility()

操作なし プライベート モードはサポートされていません。
setSettingsText() 操作なし 通知は、アプリ設定にリンクする機能をサポートしていません。 代わりに、ドライバーはアプリ経由でアプリ設定にアクセスします。
setTicker() no-op ティッカー テキストはサポートされていません。

表 2: Notification.Builder のネストクラスの変更点

ネストクラス 効果 説明

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

不使用 要約文のみが表示されます。これらのスタイルの詳細な通知は 対象外です。
Notification.BubbleMetadata 不使用 ふきだしはサポートされていません。
Notification.MediaStyle 非表示 このスタイルの通知は非表示になります。Android Automotive OS は、メディアの通知および再生に関するユーザー インターフェースの操作を管理します。
Notification.MessagingStyle 動作の変更

このスタイルの通知は、以下の点が異なります。

Notification.CarExtender

Notification.WearableExtender

不使用 エクステンダーはサポートされていません。

Notification.Action.Builder

表 3 に、 Notification.Action.Builder クラスの API の変更点と制限事項を示します。

表 3. Notification.Action.Builder のパブリック メソッドの変更点

パブリック メソッド 効果 説明
public コンストラクタ 動作の変更 public コンストラクタで指定されたアイコンは無視されます。
addRemoteInput 動作の変更 できる限りドライバーの気を散らさないようにするため、ユーザーの代わりにデジタル アシスタント(Gemini や Google アシスタントなど)がメッセージに対するレスポンスを挿入します。ユーザーはメッセージを入力できません。
setAllowGeneratedReplies 操作なし スマート リプライはサポートされていません。