モバイルアプリを 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>
- 次の
<meta-data>
要素を含む<activity>
マニフェスト要素がある場合:
<meta-data android:name="distractionOptimized" android:value="true">
これらのいずれかがアプリに該当する場合でも、アクティビティをディスプレイ互換モードで実行する場合は、アプリのマニフェストに次の <meta-data>
要素を追加します。
<application ...>
...
<meta-data android:name="android.software.car.display_compatibility" android:value="true"/>
...
</application>
互換モードでアプリをテストする
互換モードでアプリをテストするには、互換モードの汎用システム イメージを使用します。
デバイスのサポートを決定する
Android Automotive OS 互換モードをサポートするデバイスは、android.software.car.display_compatibility
システム機能を宣言する必要があります。この機能をサポートしているデバイスを確認するには、Google Play Console のデバイス カタログを使用します。