モバイルアプリを Android Automotive OS デバイスに導入するプロセスを簡素化するため、一部の自動車には、既存のモバイルアプリを自動車に導入する際に発生する一般的な問題に対処する互換モードが搭載されています。
この互換モードは自動車対応モバイルアプリ プログラムで使用されますが、そのプログラムに含まれないアプリもこのモードで実行できます。
互換モードについて
Android Automotive OS 互換モードは、一部の車両で利用できるソフトウェア機能で、モバイル デバイス用に作成されたアプリを Android Automotive OS で実行する際のユーザー エクスペリエンスを向上させます。
「戻る」ナビゲーション
他のフォーム ファクタとは異なり、Android Automotive OS デバイスにハードウェアまたはソフトウェアの「戻る」アフォーダンスを備える必要はありません。互換モードでは、ハードウェア ボタン、ソフトウェア ボタン、ジェスチャーなど、システム提供の「戻る」アフォーダンスを必要とすることで、この問題に対処しています。これにより、アプリが独自の UI 要素のみを使用してナビゲーションを確実に行う必要がなくなります。

互換モードが有効な状態で

互換モードなし
セーフエリアのレンダリング
自動車では、システムバーやディスプレイ カットアウトなどのソフトウェア要素やハードウェア要素により、主にモバイル デバイス向けに開発されたアプリの想定が崩れる可能性があります。互換性モードでは、アプリが安全な領域にレンダリングされるようにすることで、この問題に対処します。
密度のスケーリング
自動車での操作距離は他の大画面デバイスよりも長いため、自動車で実行する場合、タップ ターゲットとフォントサイズは推奨よりも小さくなることがよくあります。互換モードでは、OEM がアプリのレンダリング時に使用する DPI スケーリング係数を指定できるようにすることで、この問題に対処しています。
アクティビティのライフサイクル
駐車中用のアプリに Android Automotive OS のサポートを追加するで説明したように、ドライバーの注意散漫を防ぐため、車が運転モードに入ると OS によってアプリのアクティビティが自動的にブロックされます。互換モードが有効になっているデバイスでは、OEM のブロック UI を透明にすることはできません。そのため、ブロックされるとアプリは表示されなくなり、停止ライフサイクル状態に移行します。
互換モードを設定する
デフォルトでは、デバイスが互換モードをサポートしている場合、アプリのアクティビティは互換モードで実行されます。マニフェストに android.hardware.type.automotive
機能の <uses-feature>
要素が存在する場合、アクティビティは互換モードで実行されません。
<application ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</application>
前述の <uses-feature>
要素に関係なく、アクティビティをディスプレイ互換モードで実行する場合は、アプリのマニフェストに次の <meta-data>
要素を追加します。
<application ...>
...
<meta-data android:name="android.software.car.display_compatibility" android:value="true"/>
...
</application>
互換モードでアプリをテストする
互換性モードでアプリをテストするには、互換性モードの汎用システム イメージまたは Google Pixel Tablet の Android Automotive OS システム イメージを使用します。
デバイスのサポートを決定する
Android Automotive OS 互換モードをサポートするデバイスは、android.software.car.display_compatibility
システム機能を宣言する必要があります。この機能をサポートしているデバイスを確認するには、Google Play Console のデバイス カタログを使用します。