モバイルアプリを Android Automotive OS デバイスに移行するプロセスを簡素化するため、一部の自動車には互換モードが搭載されています。このモードは、既存のモバイルアプリを自動車に移行する際に発生する一般的な問題に対処します。
この互換モードは自動車対応モバイルアプリ プログラムで使用されますが、 このプログラムに参加していないアプリも互換モードで実行できます。
互換モードについて
Android Automotive OS の互換モードは、 一部の車両で利用できるソフトウェア機能です。Android Automotive OS で実行するモバイル デバイス向けアプリのユーザー エクスペリエンスを向上させます。
「戻る」ナビゲーション
他のフォーム ファクタとは異なり、Android Automotive OS デバイスにはハードウェアまたはソフトウェアの「戻る」アフォーダンスは必要ありません。互換モードでは、ハードウェア ボタン、ソフトウェア ボタン、ジェスチャーなど、システム提供の「戻る」アフォーダンスが必要になります。つまり、互換モードを搭載したデバイスのみを対象とする場合、アプリで独自の「戻る」ナビゲーション コントロールを提供する必要はありません。
互換モードが有効な場合
互換モードが無効な場合
セーフエリアのレンダリング
自動車では、システムバーやディスプレイ の切り欠きなどのソフトウェア要素とハードウェア要素により、主に モバイル デバイス向けにアプリを開発する際に想定したことが無効になる可能性があります。互換モードでは、セーフエリア内にアプリをレンダリングすることで、この問題に対処します。
密度のスケーリング
自動車での操作距離は他の大画面デバイスよりも長いため、自動車で実行すると、タッチ ターゲットとフォントサイズが推奨値よりも小さくなることがよくあります。互換モードでは、OEM がアプリのレンダリングに使用する DPI スケーリング係数を指定することで、この問題に対処します。
アクティビティのライフサイクル
駐車場アプリに Android Automotive OS のサポートを追加する で説明したように、ドライバーの集中を妨げないように、車が 運転モードに入るとアプリのアクティビティが OS によって自動的にブロックされます。互換モードを搭載したデバイスでは、OEM のブロック UI を透明にすることはできません。そのため、ブロックされるとアプリが表示されなくなり、ライフサイクル状態が 停止 になります。
互換モードを設定する
デフォルトでは、デバイスが互換モードをサポートしている場合、アプリのアクティビティは互換モードで実行されます。マニフェストに
<uses-feature> 機能の android.hardware.type.automotive
要素がある場合、アクティビティは互換モードで実行されません 。
<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 の
デバイス カタログを使用します。