HMIの概要

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

  • AOSPホスト統合ガイド。 App Hostを使用すると、3PカーアプリがOEMスタイルのユーザーインターフェイス(UI)コンポーネントを代わりにレンダリングできます。
  • 車の設定構造。車の設定は、車中心の視覚的なユーザーインターフェイス、基本的なドライバーの注意散漫の最適化、およびOEM向けの追加のカスタマイズエントリポイントを提供します。
  • 車のUIライブラリ統合ガイド車のUIライブラリは、車内に存在するすべてのアプリが一貫性とカスタマイズを実現できるようにするUI開発フレームワークを提供します。
  • ステータスバーのシステムアイコンをカスタマイズします。ステータスバーは、ユーザーに重要な情報を永続的に表示するために使用されるAndroidシステムUIのコンポーネントです。ステータスバーのシステムアイコンをカスタマイズする方法を学びます。
  • ヘッズアップ通知ヘッズアップ通知をカスタマイズする方法を学びます。
  • ダイヤラこのAndroidシステムアプリを使用して、Bluetooth通話、連絡先の閲覧、通話管理のための注意散漫最適化(DO)エクスペリエンスを実装します。
  • メディアわずかな設定とサービスで、開発者は既存のメディアアプリを拡張できます。アプリはAutomotiveMediaテンプレートに準拠する必要がありますが、開発者はテンプレートの色、フォント、アイコンなどをカスタマイズして、ブランドエクスペリエンスを作成できます。
  • 通知通知の外観と構成を変更する方法を学びます。

用語

これらの用語は、HMIおよび関連記事で使用されています。

学期意味
コアアプリ設定、ラジオ、HVAC、メディア、ダイヤラ、キーボードなど、システム機能に不可欠なアプリケーションの主要なセット。
互換性定義文書(CDD)デバイスが最新バージョンのAndroidと互換性を持つために満たす必要のある要件を列挙します。
互換性テストスイート(CTS)無料の商用グレードのテストスイート。CompatibilityTestSuiteDownloadsからダウンロードできます。
カスタマイズ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要素が適切にレンダリングされるようにするには、密度プロパティを、ビルドファイルの次のエントリのように、物理的な密度に最も近いバケット( Display Metrics )に設定する必要があります。

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テーマを変更して、全体的なカスタマイズプロセスを開始することをお勧めします。デフォルトでは、システムUIとAOSPのすべてのシステムアプリは、このテーマを継承します。 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が含まれます。これには、ナビゲーションバー、ステータスバー、ロック画面、音量ダイアログ、トースト、ユーザーピッカー、およびアクセス許可ダイアログが含まれます。 OEMは、それぞれがCDD、CTS、およびその他の該当するUXガイドラインの要件内にある場合、リソースオーバーレイとテーマを介してシステムUIコンポーネントを広範囲にカスタマイズできます。

システムアプリケーション

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

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

ホーム画面

カーランチャーと呼ばれるホーム画面は、HMIエクスペリエンスのランディングページです。 AOSP実装は参照としてのみ機能し、OEMは実装を独自のものに置き換えることが期待されます。これは、必要に応じて、ナビゲーション、メディア再生、通信、およびその他のシステム状態を組み合わせることがよくあります。多くの場合、カーランチャーアプリはシステムで利用可能なアプリケーションを表示します。最近のイベント、パッケージの変更、ヘッドレス(ランチャーアクティビティなし)アプリなどのイベントを処理する方法については、リファレンス実装を参照してください。

通知

通知はAndroidOSの不可欠なコンポーネントであり、同じ構成(ヘッドアップ通知、通知リスト/センター、通知API、ランキング、インラインアクションを含む)がAndroidAutomotiveに含まれています。詳細については、ハンドヘルド通知の概要を参照してください。自動車のユースケースを最適化するために、次の変更が行われました(ハンドヘルド通知スタックと比較して)。

  • ユーザーに表示される全体的な通知コンテンツの削減。進行中のメディア再生、進行中のナビゲーション、およびシステムアプリの「重要でない」(LOW以下の重要性)フォアグラウンドサービス通知を通知リスト/センターから削除します。これらの通知は冗長化されていることを理解しています(例:メディアの状態を示すクラスター) )または役に立たない。

  • 複雑なコンテキストコントロール(長押しやスワイプ長ベースのコントロールなど)の削除。

  • UX制限エンジン構成の尊重。

    • メッセージング通知コンテンツのプレビューは、ドライブの状態に基づいて非表示になる場合があります。
    • すべての文字列は最大長でキャップされています。
  • Android 9の車専用の新しい通知カテゴリの追加は、 android.uid.systemとして実行されているバンドルされたシステムアプリでのみ利用できます。

  • CATEGORY_CAR_EMERGENCY 。通知リストの一番上にランク付けされています。サイレント(DND)コントロールをバイパスします。

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

通知APIからUIまで、通知スタックのエンドツーエンドの実装は、ヒーローアプリと見なされます。すべてのHUで一貫したAPIの相互運用性を保証し、アップグレード性を最大化するために、OEMはAOSP実装を採用し、それを軽くカスタマイズすることを強くお勧めします。

カスタマイズ

標準のDeviceDefaultテーマとリソースオーバーレイが適用されます。非常に限られた数の動作カスタマイズノブが次の場所で利用できます。

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

設定

設定アプリケーション(車の設定)は、ノブを公開するヒーローアプリの1つであり、ユーザーはこれを使用してAndroidOSやその他の車の側面を構成できます。設定アプリケーションは、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 )がメインの設定アプリからリンクする必要がある設定画面をホストしている場合、別のアプリケーションを動的に挿入できます。詳細については、「動的設定」を参照してください。

メディア

Mediaは、 MediaSessionおよびMediaBrowserAPIを実装するメディアアプリケーションに代わってフロントエンドのユーザーエクスペリエンスを提供するヒーローアプリです。メディアアプリケーションは、サードパーティのアプリ(SpotifyやPandoraなど)だけでなく、Bluetooth(BT)ストリーミングやローカルメディアなどの他のメディアソースにすることもできます。

Android Auto(プロジェクション)では数百のメディアアプリを利用できます。これらのアプリはすべて、 Autoのオーディオ再生の提供で説明されているようにこれらのメディアAPIを実装しています。メディアAPIは、Androidのメジャーリリースごと、およびAndroidxライブラリのリリースとともに進化します。すべてのメディアアプリとAndroidの将来のバージョン間でAPIの相互運用性を保証するために、OEMはAOSP実装を採用してからカスタマイズすることを強くお勧めします。

カスタマイズ

DeviceDefaultテーマによる標準のテーマは、メディアにも適用されます。さらに、カスタマイズがUXガイドラインの範囲内であれば、リソースオーバーレイを使用してルックアンドフィールをさらにカスタマイズできます。

その他のメディアアプリ

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

可能な限り、これらのメディアソースをMediaSessionおよびMediaBrowser APIの実装を通じてメディアにプラグインすることを強くお勧めします(これはサードパーティのメディアアプリに当てはまります)。 AOSPのLocalMediaPlayerアプリをご覧ください。このアプリはローカルメディアファイルを表示し、メディアにソースとして表示されます。