Android Automotive OS 互換モード

モバイルアプリを Android Automotive OS デバイスに導入するプロセスを簡素化するため、一部の自動車には、既存のモバイルアプリを自動車に導入する際に直面する一般的な問題に対処する互換モードが搭載されています。

この互換モードは自動車対応モバイルアプリ プログラムで使用されますが、このプログラムに参加していないアプリもこのモードで実行できます。

互換モードについて

Android Automotive OS 互換モードは、Android Automotive OS で実行されるモバイル デバイス向けに構築されたアプリのユーザー エクスペリエンスを向上させるために、一部の車両で利用可能なソフトウェア機能です。

「戻る」ナビゲーション

他のフォーム ファクタとは異なり、Android Automotive OS デバイスにはハードウェアまたはソフトウェアの「戻る」アフォーダンスを搭載するという要件はありません。互換モードでは、ハードウェア ボタン、ソフトウェア ボタン、ジェスチャーなど、システムが提供する戻るアフォーダンスを必要とすることで、この問題に対処します。つまり、互換モードのデバイスのみをターゲットとする場合、アプリは独自の戻るナビゲーション コントロールを提供する必要はありません。

アプリの UI に戻るアフォーダンスがなくても、ユーザーは前の画面に戻ることができます。
ユーザーが前の画面に戻れない。

セーフエリアのレンダリング

自動車では、システムバーやディスプレイ カットアウトなどのソフトウェア要素やハードウェア要素により、主にモバイル デバイス向けにアプリを開発する際に立てた仮定が無効になることがあります。互換モードでは、アプリをセーフエリア内にレンダリングすることで、この問題に対処します。

密度スケーリング

自動車では、他の大画面デバイスよりも操作距離が長いため、自動車で実行すると、タッチ ターゲットやフォントサイズが推奨値よりも小さくなることがよくあります。互換モードでは、アプリのレンダリング時に使用される DPI スケーリング係数を OEM が指定できるようにすることで、この問題に対処しています。

アクティビティのライフサイクル

停車中のアプリに Android Automotive OS のサポートを追加するで説明したように、ドライバーの集中を妨げないように、車が運転モードに入るとアプリのアクティビティが OS によって自動的にブロックされます。互換モードのデバイスでは、OEM のブロック UI は透明であってはなりません。ブロックされると、アプリは表示されなくなり、停止ライフサイクル状態に移行します。

互換モードを設定する

デフォルトでは、デバイスが互換モードをサポートしている場合、アプリのアクティビティは互換モードで実行されます。マニフェストに android.hardware.type.automotive 機能の <uses-feature> 要素が存在する場合、アクティビティは互換モードで実行されません。

<manifest ...>
  ...
  <uses-feature android:name="android.hardware.type.automotive" ...>
  ...
</manifest>

前述の <uses-feature> 要素に関係なく、アクティビティをディスプレイ互換モードで実行したい場合は、アプリのマニフェストに次の <meta-data> 要素を追加します。

<application ...>
  ...
  <meta-data android:name="android.software.car.display_compatibility" android:value="true"/>
  ...
</application>

互換モードでアプリをテストする

互換性モードでアプリをテストするには、互換性モードの Generic System Image または Google Pixel Tablet の Android Automotive OS のシステム イメージを使用できます。

デバイスのサポートを決定する

Android Automotive OS 互換モードをサポートするデバイスは、システム機能 android.software.car.display_compatibility を宣言しなければなりません。この機能をサポートしているデバイスを確認するには、Google Play Console のデバイス カタログを使用します。