Android Automotive OS の概要

Android Automotive OS のユーザー インターフェース
図 1: Android Automotive OS

Android Automotive OS は、車内での使用に最適化された Android のバージョンで、コア Android プラットフォームを拡張したものです。Google 搭載の自動車は Android Automotive OS を搭載しており、Google Play、Gemini、Google アシスタント、Google マップなどの Google アプリやサービスが付属しています。

Android Automotive OS のハードウェアについて

Android Automotive OS デバイスの最小ハードウェア仕様について詳しくは、アプリがサポートする Android バージョンの Android 互換性定義ドキュメント(CDD)Android Automotive の要件セクションをご覧ください。

ディスプレイ カットアウト

他の Android フォーム ファクタと同様に、Android Automotive OS デバイスでは、非矩形ディスプレイのディスプレイ カットアウトがサポートされています。ただし、自動車の切り欠きのサイズと形状は、他のフォーム ファクタの切り欠きとは大きく異なる場合があります。詳細なガイダンスについては、ウィンドウ インセットとディスプレイ カットアウトを使用するをご覧ください。

オーディオ

Android Automotive OS デバイスは通常、固定音量デバイスです。この変更がアプリに与える影響について詳しくは、固定音量デバイスを使用するをご覧ください。

Android Automotive OS ソフトウェアについて

Android Automotive OS は、他のフォーム ファクタで使用されているものと同じコア オペレーティング システムをベースとしていますが、アプリの開発と使用方法に影響を与える可能性のある、Android Automotive OS 独自の追加機能がいくつかあります。

システム UI

これらのシステム UI 要素の車内での機能には、注意すべき違いがあります。

他のフォーム ファクタとは異なり、Android Automotive OS デバイスにはハードウェアまたはソフトウェアの「戻る」アフォーダンスを搭載するという要件はありません。互換モードで実行されていない場合、アプリで実装されるアクティビティには、アプリ内ナビゲーションを有効にする UI アフォーダンスを含めて、AN-1 品質に関するガイドラインを満たす必要があります。

システムバーのレイアウト

他のフォーム ファクタと同様に、Android Automotive OS には、ステータスバーやナビゲーション バーなどのシステムバーが含まれています。自動車では、これらのバーのサイズと配置が他のフォーム ファクタとは異なる場合があります。たとえば、ナビゲーション バーを画面の左側、右側、下部に配置できます。ほとんどのスマートフォンやタブレットのように、上部にステータスバー、下部にナビゲーション バーがある場合でも、自動車ではこれらの要素のサイズがはるかに大きくなる可能性があります。

また、モバイル デバイスのディスプレイ カットアウトは通常システムバーの境界内に収まっていますが、自動車ではそうではありません。

詳細なガイダンスについては、ウィンドウ インセットとディスプレイ カットアウトを使用するをご覧ください。

没入モード

Android Automotive OS では、アプリが没入モードの開始と終了に合わせてシステムバーの表示と非表示を切り替えられるかどうかを OEM が制御できます。OEM は、アプリがシステムバーを非表示にできないようにして、空調などの車両制御に常に画面からアクセスできるようにすることができます。

ユーザー エクスペリエンスの制限

ユーザー エクスペリエンス(UX)制限は、運転者の注意散漫を考慮するために Android Automotive OS に組み込まれた機能です。UX 制限は、運転中の使用に最適化されていないアプリの使用を自動的に防止する役割を担います。

注意散漫防止の最適化済みとしてマークされていないアプリの上に表示されるアクティビティ ブロック アクティビティ。
図 2: UX 制限によってブロックされているアプリ

UX 制限が有効になる方法とタイミングを決定するルールの正確なセットは、自動車メーカーによって決定されます。これらのルールは地域によって異なる場合があります。たとえば、ヨーロッパで販売されている同じ車両でも、米国で販売されている車両とは異なるルールが適用されることがあります。

UX 制限ルールは、車両内のディスプレイによって異なる場合もあります。たとえば、車両の走行中に、ドライバーの視線に入るセンター ディスプレイは制限され、助手席ディスプレイは制限されないようにすることが可能です。

アプリで UX 制限に対応する必要がある場合は、実装をリバース エンジニアリングしようとせずに、直接参照してください。たとえば、ギアがパーク以外の場合は UX 制限が有効になっていると想定すると、助手席ディスプレイで実行されているアプリを不必要に制限する可能性があります。

注意散漫防止の最適化

デフォルトでは、ドライバーの注意散漫を制限するために、UX 制限が有効になっている間はアクティビティを実行できません。車両が走行中にアクティビティを継続して実行するようシステムに指示するには、対応する <activity> 要素内に次の <meta-data> 要素を追加します。

<activity ...>
  <meta-data android:name="distractionOptimized" android:value="true">
</activity>

Android Automotive OS 用アプリを開発する場合、このメタデータがマニフェストに存在するのは、自動車向けアプリ ライブラリを使用してビルドされたアプリの CarAppActivity<activity> マニフェスト要素を宣言する場合のみです。他のアクティビティを注意散漫防止の最適化済みとしてマークすることはできません。マークした場合、Google Play ストアに送信したときにアプリが拒否されます。

ユーザー補助

Android Automotive OS のユーザー補助機能は、他のフォーム ファクタほど充実していません。Android Automotive OS デバイスでは、TalkBackスイッチ アクセスVoice Access は利用できません。

字幕の設定は Android Automotive OS デバイスでサポートされています。統合の詳細については、システムの字幕設定を適用するをご覧ください。

ネットワークの選択

Android Automotive OS は、アプリごとのネットワーク選択(PANS)をサポートしています。これにより、OEM はアプリごとにモバイル ネットワーク トラフィックを異なるネットワークにルーティングできます。

ほとんどのアプリは、割り当てられたデフォルト ネットワークのみを使用し、この機能のメリットのみを享受します。たとえば、ユーザーが独自のデータプランを持っていない場合でも、OEM がアプリからのネットワーク トラフィックの料金を支払うことがあります。アプリ(またはその依存関係の 1 つ)がデフォルト以外のネットワークに依存している場合、OEM によって設定された設定のメリットを享受できない可能性があります。デフォルト以外のネットワークの使用に関するガイダンスについては、ネットワークの状態を読み取るをご覧ください。

システム機能

PackageManager::hasSystemFeature を使用して、特定の機能が利用可能かどうかを検出し、それに応じてアプリの動作を調整できます。

ハードウェア機能

他のモバイル以外のフォーム ファクタと同様に、車で利用できるハードウェア機能は、モバイル デバイスで利用できるハードウェア機能とは異なる場合があります。

画面の向き

テレビと同様に、車は固定された向きのデバイスです。テレビとは異なり、縦向きと横向きの両方があります。Android Automotive OS 向けにビルドされたアプリがすべての車両に配信されるようにするには、アプリが android.hardware.screen.landscape 機能または android.hardware.screen.portrait 機能の明示的または暗黙的な機能要件を持たないようにする必要があります。

ネットワーク ロケーション

多くの Android Automotive OS デバイスは、ネットワーク ロケーションの提供に使用されるテレフォニー スタックを実装していないため、android.hardware.location.network システム機能をレポートしません。ネットワーク ロケーションは利用できない可能性がありますが、おおよその位置情報へのアクセスは引き続きサポートされています。Android Automotive OS のおおよその位置情報をご覧ください。

ソフトウェア機能

他のフォーム ファクタでよく見られるソフトウェア機能の一部は、Android Automotive OS デバイスでサポートされていない場合があります。たとえば、多くの Android Automotive OS 搭載車両では、以下の機能は利用できません。

Google Play の機能要件を満たす

Google Play を通じて自動車に配信されるには、Android Automotive OS 用に作成されたアプリの android.hardware.type.automotive 機能の AndroidManifest.xml ファイルに <uses-feature> 要素を含める必要があります。

<manifest ...>
  ...
  <!--
    See Choose a track for Android Automotive OS
    for details on how to choose which value to use for the android:required attribute.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]">
  ...
</manifest>

また、アプリに android:required="true" を含む明示的な機能宣言、または次のいずれかの機能に対する暗黙的な機能要件がある場合は、アプリの機能要件が、それ以外は互換性のある車両への配信を妨げないように、それらを更新または削除する必要があります。

android:required="true" で明示的に宣言された機能については、次のいずれかを行うことができます。

  • 機能が暗黙的に必要とされない場合は、<uses-feature> 要素を削除します。
  • android:required="false" を使用して機能を明示的に宣言します。

暗黙的に必要な機能については、次のいずれかを行うことができます。

  • android:required="false" を使用して機能を明示的に宣言します。
  • 機能に暗黙的な要件を導入するマニフェスト値を削除または更新します。

マニフェストで機能の宣言を変更しても、アプリの実際の動作には影響しません。そのため、これらの機能がなくてもアプリが適切に動作することを確認してください。

よくある質問

Google 搭載の自動車はどの車種ですか?

Google 搭載のモデルがある OEM の一覧については、Google 搭載の自動車サイトをご覧ください。ハードウェア仕様やその他のデバイスの詳細は、Google Play Console のデバイス カタログで確認できます。