HMI の概要

Android Automotive は、Android オープンソース プロジェクト(AOSP)で提供される車載インフォテインメント プラットフォーム ソリューションです。このトピックの記事では、Android Automotive システム UI によって提供される主要な概念とコンポーネント、ならびに OEM、サードパーティ デベロッパー、エンドユーザー向けの効果的なヒューマン マシン インターフェース(HMI)システムを構築するために必要なコアアプリについて説明します。

  • AOSP ホスト統合ガイド。App Host は、サードパーティの自動車アプリが App Host に代わって OEM 固有のユーザー インターフェース(UI)コンポーネントをレンダリングすることを許可します。
  • 車の設定の構造。車の設定は、自動車に特化した視覚的ユーザー インターフェース、基本的なドライバーの注意散漫防止の最適化、およびその他のカスタマイズのエントリ ポイントを OEM のために提供します。
  • Car UI ライブラリ統合ガイド。Car UI ライブラリは、すべての車載アプリで一貫性を実現してカスタマイズを可能にする UI 開発フレームワークを提供します。
  • ステータスバー システム アイコンのカスタマイズ。ステータスバーは Android システム UI のコンポーネントであり、ユーザーに重要な情報を常に表示するために使用されます。ステータスバー システム アイコンをカスタマイズする方法をご確認ください。
  • ヘッドアップ通知。ヘッドアップ通知をカスタマイズする方法をご確認ください。
  • 電話アプリ。この Android システムアプリは、Bluetooth 通話、連絡先のブラウジング、通話管理に対して注意散漫防止の最適化(DO)機能を実装するために使用します。
  • メディア。わずかな設定と 1 つのサービスで、デベロッパーは既存のメディアアプリを拡張できます。アプリは Automotive Media テンプレートに準拠する必要がありますが、デベロッパーはテンプレートの色、フォント、アイコンなどをカスタマイズして、ブランド エクスペリエンスを作成できます。
  • 通知。通知の外観と構成を変更する方法をご確認ください。

用語

次の用語は HMI と関連記事で使用されます。

用語 定義
コアアプリ システム機能に不可欠なアプリ(設定、ラジオ、HVAC、メディア、電話アプリ、キーボードなど)の主要なセット。
互換性定義ドキュメント(CDD) 最新の Android バージョンと互換性を保つためにデバイスが満たす必要のある要件を列挙したドキュメント。
互換性テストスイート(CTS) 無料の商用グレードのテストスイート。互換性テストスイートのダウンロードからダウンロードできます。
カスタマイズ OEM の要件を満たすように AOSP の実装を変更する動作。通常、この動作には、リソース オーバーレイを使用して外観の変更を適用すると同時に、CDD、CTS、関連するすべてのユーザー エクスペリエンス ガイドラインへの準拠を保証することが含まれます。
ヒーローアプリ 機能、アップグレード可能性、サードパーティのデベロッパー エコシステム、エンドユーザーなど、Android のあらゆる側面に不可欠な主要アプリのセット。ヒーローアプリには、通知、設定、メディア、およびコミュニケーション センターまたは電話アプリが含まれます。対応する AOSP 実装は本番環境品質を満たす必要があります。
リソース オーバーレイ ユーザー インターフェースのレンダリングに変更を反映させる必要がある場合は、このメカニズムを使用して、コンパイル時(通常の場合)または実行時(ランタイム リソース オーバーレイ(RRO)を使用する場合)に、色の置き換え、寸法の変更、描画の有効化、レイアウト リソースの適用を行います。
システム UI ナビゲーション バー、ステータスバー、ロック画面、音量ダイアログなど、システムに属するアプリ外ユーザー インターフェース。
テーマ テーマを継承するコンポーネントとアプリの外観とスタイルを決定するために使用される、色とスタイルのコレクション。
ユーザー エクスペリエンス(UX) ユーザー インターフェース(UI)フィールドのデザインとそのユーザビリティ。

カスタマイズ

システム UI やその他のコアシステム アプリの AOSP 実装は、HMI 開発プロセスを開始するための強固な基盤として機能します。「カスタマイズ」とは、OEM のブランディング、ビジネス、法的要件を満たすための AOSP 実装の変更(主にリソース オーバーレイの使用による)を指します。

システム全体は柔軟性に優れた設計とビルドになっていますが、各コンポーネントは、次のように異なる程度にカスタマイズする必要があります。

  • システム UI。OEM は、CDD と CTS、および該当するその他の該当する UX ガイドラインの範囲内で AOSP 実装のカスタマイズや置き換えを行えます。

  • ヒーロー以外のシステムアプリ(リファレンスとも呼ばれます。OEM は、AOSP 実装のカスタマイズや置き換えを行えます。

  • ヒーローアプリ。各アプリには、一連の詳細なカスタマイズのガイドラインが付属しています。OEM には、AOSP 実装を採用したうえで、該当するガイドラインで指定された範囲内でカスタマイズすることを強くおすすめします。

密度構成

特定の物理ディスプレイ構成で UI 要素が正しくレンダリングされるようにするには、ビルドファイルの次のエントリのように、密度プロパティを物理密度に最も近いバケット(ディスプレイの指標)に設定する必要があります。

PRODUCT_PROPERTY_OVERRIDES := \
        ro.sf.lcd_density=160

UX 制限エンジン

CarUxRestrictionsManager は、アプリが運転状態に関連する変更をリッスンしてユーザー エクスペリエンスを適切に変更するためのフックを提供します。OEM は、packages/services/Car/service/res/xml/car_ux_restrictions_map.xml の構成ファイルをオーバーレイして、システムの動作に変更を反映させることができます。

システムテーマ

DeviceDefault は、色やテキスト スタイルといった項目のデフォルトのセットをシステムレベルで規定するテーマです。OEM は、DeviceDefault テーマを変更して全体的なカスタマイズ プロセスを開始することが推奨されます。デフォルトでは、AOSP のシステム UI とすべてのシステムアプリはこのテーマに従います。OEM で開発されたシステムアプリも DeviceDefault を使用することをおすすめします。サードパーティで開発アプリは DeviceDefault を使用しないでください。ただし、androidx.car ライブラリで提供されている Theme.Car を使用する必要があります。ファイルは次のように配置されています。

  • コア/frameworks/base/core/res/res/values/themes_device_defaults.xml
  • /frameworks/base/core/res/res/values/colors_car.xml
  • スタイル/frameworks/base/core/res/res/values/styles_car.xml
  • 自動車オーバーレイ。
    /packages/services/Car/car_product/overlay/.../values/themes_device_defaults.xml

OEM が car_product オーバーレイをさらに拡張するには、ベンダー ディレクトリ内の car_product ディレクトリに対する並列オーバーレイ構造を提供する必要があります。

テーマ プレイグラウンド アプリ

このアプリは、すべてのテーマ属性を 1 か所で可視化することで、DeviceDefault テーマをカスタマイズするプロセスを簡素化します。さらに、このアプリと他のシステムアプリで特定のスタイルのレンダリング効果を比較することにより、デベロッパーはテーマの問題をすばやくデバッグできます。このアプリは次の場所で入手できます。

  /packages/services/Car/tests/ThemePlayground

システム UI

システム UI には、主に /frameworks/base/packages/CarSystemUI にある /frameworks/base の下のすべての UI が含まれます。そのような UI には、ナビゲーション バー、ステータスバー、ロック画面、音量ダイアログ、トースト、ユーザー選択ツール、権限ダイアログなどがあります。OEM は、個々のシステム UI コンポーネントが CDD、CTS、およびその他の該当する UX ガイドラインの要件を満たしていれば、リソース オーバーレイとテーマ設定を通じて、それらのコンポーネントを大幅にカスタマイズできます。

システムアプリ

Android Automotive には、システム全体の機能に不可欠なコアシステム アプリのセットが含まれています。そのうち、コミュニケーション センター、メディア、通知、設定はヒーローアプリとみなされます。

  • コミュニケーション センター
  • 空調設備サービス
  • IME(キーボード)
  • ランチャー(ホーム画面)
  • ローカル メディア プレーヤー
  • メディア
  • メッセンジャー
  • 通知
  • ラジオ
  • 設定

ホーム画面

ホーム画面(「自動車ランチャー」と呼ばれます)は、HMI エクスペリエンスのランディング ページです。AOSP 実装はリファレンスとしてのみ提供され、OEM は通常、統合ナビゲーション、メディア再生、コミュニケーション、その他のシステム状態など、必要に応じてこの実装を独自の実装に置き換える必要があります。自動車ランチャー アプリは、多くの場合、システムで使用できるアプリを表示します。最近のイベント、パッケージの変更、ヘッドレス(ランチャー アクティビティを伴わない)アプリなどのイベントを処理する方法については、リファレンス実装をご覧ください。

通知

通知は Android OS に不可欠なコンポーネントであり、Android Automotive にも同じ構造(ヘッドアップ通知、通知リスト / センター、通知 API、ランク付け、インライン アクションなど)が含まれています。詳細については、ハンドヘルド通知の概要をご覧ください。自動車のユースケースを最適化するために、(ハンドヘルド通知スタックから)次の点が変更されました。

  • ユーザーに表示される通知コンテンツの全体的な削減。継続的なメディア再生通知、継続的なナビゲーション通知、「重要でない」(重要度レベルが「LOW」以下)システムアプリのフォアグラウンド サービス通知を通知リスト / 通知センターから削除しました。これらの通知が冗長である(メディア状態を表示するクラスターなど)ことや、役に立たないことを考慮してのことです。

  • 複雑なコンテキスト コントロール(長押しとスワイプの長さに基づく制御など)の削除。

  • UX 制限のエンジン構成の優先。

    • システムは、運転状態に基づいてメッセージ通知コンテンツのプレビューを非表示にする場合があります。
    • すべての文字列に最大長が設定されました。
  • 自動車専用の新しい通知カテゴリの追加(Android 9)。このカテゴリは、android.uid.system として実行されるバンドルされたシステムアプリにのみ適用されます。

  • CATEGORY_CAR_EMERGENCY。通知リストの最上位にランク付けされます。サイレント モード(DND)制御をバイパスします。

  • CATEGORY_CAR_WARNING。緊急通知より下位、他の通知より上位にランク付けされます(DND をバイパスします)。
  • CATEGORY_CAR_INFORMATION。「重要度」と最新性に基づいて、残りの通知と一緒にランク付けされます。

通知スタックのエンドツーエンドの実装(通知 API からインターフェースまで)は、ヒーローアプリとみなされます。すべての HU が一致した API 相互運用性を維持し、アップグレード可能性を最大化することを保証するために、OEM は最初に AOSP 実装を使用し、次にそれを軽度にカスタマイズすることを強くおすすめします。

カスタマイズ

標準の DeviceDefault テーマ設定とリソース オーバーレイ アプリを適用します。動作のカスタマイズ ノブのごく一部を以下で入手できます。

packages/apps/Car/Notification/res/values/config.xml

設定

設定アプリ(車の設定)は、ユーザーが Android OS と自動車エクスペリエンスの残りの要素を構成するために使用できるノブを公開するヒーローアプリの一つです。設定アプリは OS の 200 以上の機能を公開します。これらの機能は Android の各メジャー リリースと密接に関連しています。アップグレード可能性を実現して断片化を回避するために、OEM は(実装をフォークするのではなく)AOSP 実装を使用し、次にそれをカスタマイズすることを強くおすすめします。

カスタマイズ

設定アプリは、カスタマイズされることを考慮していくつかのカスタマイズ方法を提供しています。

  • テーマ設定。各 Preference オブジェクト タイプのレンダリング方法を視覚的にカスタマイズできるようにします。次に例を示します。

    • Preference.DeviceDefault.CheckBoxPreference

    • Preference.DeviceDefault.DialogPreference.EditTextPreference

  • 階層のカスタマイズ。次のように有効にします。

    • 任意のルート フラグメントに起動し、Settings/res/values/config.xml という名前のファイルで config_settings_hierarchy_root_fragment の値をオーバーレイします。

    • 順序、グループ化、テキストとアイコン、オーバーレイ Settings/res/xml/*.xml などの項目のカスタマイズ

  • 静的注入。オーバーレイ プロジェクトを設定する際、OEM は定義により独自の画面を追加してから、階層に Fragment クラスと Controller クラスを追加できます。

  • 動的注入。別の設定アプリ(apk)が設定画面をホストし、設定画面をメインの設定アプリからリンクする必要がある場合、独立したアプリを動的に挿入できます。詳細については、動的設定をご覧ください。

メディア

メディアは、MediaSession API と MediaBrowser API を実装するメディアアプリに代わって、フロントエンド ユーザー エクスペリエンスを提供するヒーローアプリです。メディアアプリは、Spotify や Pandora などのサードパーティ アプリである場合もあれば、Bluetooth(BT)ストリーミング メディアやローカル メディアなどの他のメディアソースである場合もあります。

Android Auto(投影)では数百のメディアアプリが提供されており、これらはすべて自動車用の音声再生を提供するで説明されているように、該当のメディア API を実装します。メディア API は、Android の各メジャー リリースと AndroidX ライブラリのリリースで段階的に改善されます。すべてのメディアアプリと将来の Android のバージョンで API の相互運用性を維持するため、OEM には AOSP 実装を採用したうえでカスタマイズすることを強くおすすめします。

カスタマイズ

DeviceDefault テーマの標準テーマはメディアにも適用されます。さらに、カスタマイズがユーザー エクスペリエンス ガイドラインの範囲内にある限り、リソース オーバーレイを使用して、外観とスタイルをさらにカスタマイズすることもできます。

その他のメディアアプリ

USB メディアとメディアソース

可能な範囲で、MediaSession API と MediaBrowser API の実装を通じてメディアソースをメディアに接続することを強くおすすめします(これはすべてのサードパーティ メディアアプリに該当します)。AOSP の LocalMediaPlayer アプリを参照してください。このアプリは、ローカル メディア ファイルを表示し、メディアにソースとして表示されます。