自動車向け Android アプリをテストする

自動車アプリをテストして、ユーザーが操作するときに予期しない問題が発生しないこと、また、使いにくい部分がないことを確認します。アプリのテスト方法は、アプリが Android Auto と Android Automotive OS のどちらで実行されるかによって異なります。

はじめに、次のいずれかのセクションをご覧ください。

Android Auto 用のアプリをテストする

デスクトップ ヘッドユニット(DHU)を使用すると、開発マシンで Android Auto ヘッドユニットをエミュレートして、Android Auto アプリを実行およびテストできます。DHU は、Windows、macOS、Linux の各システムで動作します。

このセクションでは、開発マシンに DHU をインストールして実行し、アプリをテストする方法を説明します。DHU のインストール後、DHU を実行するで説明している、いずれかのサポートされている接続メカニズムを使用してモバイル デバイスを接続することにより、Android Auto アプリをテストできます。

メディアアプリを作成する場合は、メディア コントローラ テストアプリを使用してメディア セッションの実装をテストすることもできます。

DHU に関連するバグの報告または機能のリクエストを行うには、この Issue Tracker を使用してください。

DHU をインストールする

開発マシンに DHU をインストールする手順は次のとおりです。

  1. デバイスの開発者向けオプションを設定するの説明に従って、Android 6.0(API レベル 23)以上を搭載するモバイル デバイスでデベロッパー モードを有効にします。
  2. アプリをコンパイルしてデバイスにインストールします。
  3. デバイスに Android Auto をインストールします。Android Auto がすでにインストールされている場合は、最新バージョンを使用していることを確認してください。
  4. SDK Manager を開いて [SDK Tools] タブに移動し、Android Auto Desktop Head Unit エミュレータ パッケージをダウンロードします。

    DHU 2.0 が表示されている SDK Manager。

    DHU は、SDK_LOCATION/extras/google/auto/ ディレクトリにインストールされます。

  5. Linux または macOS システムのそのディレクトリで、次のコマンドを実行して DHU バイナリを実行可能にします。

    chmod +x ./desktop-head-unit
    
追加手順(Linux の場合のみ)

Linux システムでバージョン 2.0 を実行している場合は、追加のライブラリをいくつかインストールする必要があります。DHU バイナリは、GLIBC バージョン 2.32 以上に依存します。次のコマンドを実行すると、システムの GLIBC のバージョンを確認できます。

ldd --version

バージョンが 2.32 未満の場合は、GLIBC を 2.32 以上にアップデートするか、OS を GLIBC 2.32 以上と互換性のあるバージョンにアップグレードする必要があります。

libc++1 ライブラリと libc++abi1 ライブラリもインストールする必要があります。インストール手順は、Linux ディストリビューションによって異なります。たとえば、Debian 派生の Linux ディストリビューションでは、次のコマンドでライブラリをインストールします。

sudo apt-get install libc++1 libc++abi1

DHU のプレリリース版をインストールする

DHU のプレリリース版を利用するには、Android Studio のプレビュー版を使用するか、既存の Android Studio インストールのアップデート チャンネルを変更して Beta チャンネルにします。

DHU を実行する

DHU をインストールしたら、USB 経由でモバイル デバイスとワークステーションを接続して、Android Auto アプリをテストできます。アクセサリ モード(DHU 2.0 で推奨)または ADB トンネリングを使用して、モバイル デバイスを開発マシンに接続し、DHU を実行します。

アクセサリ モードを使用して接続する(DHU 2.0 のみ)

Android Auto は、次のコマンドを使用して、Android Open Accessory(AOA)プロトコルで DHU に接続できます。

./desktop-head-unit --usb

デフォルトでは、DHU は使用可能な USB デバイスのリストをスキャンし、互換性のある最初のデバイスへの接続を試みます。特定のデバイスを対象にするには、次のように、--usb コマンドの一部としてデバイス ID を含めます。

./desktop-head-unit --usb=[DEVICE_ID]

ADB トンネリングを使用して接続する

この方法では、Android Debug Bridge(ADB)経由で Android Auto ヘッドユニット サーバーへの接続を設定する必要があります。トンネリングをセットアップして DHU を実行する手順は次のとおりです。

  1. デバイスに搭載されている Android のバージョンに応じて、次のいずれかの方法で Android Auto の設定を開きます。

    • Android 10 以降: デバイスで [設定] > [アプリと通知] > [アプリをすべて表示] > [Android Auto] > [詳細設定] > [アプリ内のその他の設定] をタップします。
    • Android 9 以前: Android Auto アプリで、メニュー アイコン、[設定] の順にタップします。
  2. 下の方にある [Android Auto について] セクションまでスクロールし、[バージョン] をタップして、すべてのバージョンと権限情報を表示します。

  3. [バージョンと権限情報] セクションを 10 回タップします。

    [デベロッパー向けの設定を有効にしますか?] ダイアログが表示されます。

  4. [OK] をタップします。

    これで、デベロッパー モードが有効になり、オーバーフロー メニューの開発者向けオプションにアクセスできるようになります。デベロッパー モードを有効にする必要があるのは、Android Auto アプリを初めて実行するときだけです。

  5. ヘッドユニット サーバーがまだ実行されていない場合は、画面右上のその他アイコンをタップしてオーバーフロー メニューを開き、[ヘッドユニット サーバーを起動] を選択します(図 1 を参照)。

    デバイスの通知領域に、サーバーが実行されているという通知とともにフォアグラウンド サービスが表示されます(図 2 を参照)。

    開発者向けオプションを含むコンテキスト メニュー

    図 1. 開発者向けオプションを含むコンテキスト メニュー

    ヘッドユニット サーバーが実行されているという通知

    図 2. ヘッドユニット サーバーが実行されているという通知

  6. Android Auto アプリで、[設定] の上部にある [以前に接続された車] をタップし、[Android Auto に新しい車を追加] が有効になっていることを確認します。

  7. USB 経由でモバイル デバイスを開発マシンに接続します。

  8. モバイル デバイスの画面がロック解除されていることを確認します。ロック解除されていないと、DHU を起動できません。

  9. 開発マシンで次の adb コマンドを実行して、開発マシンのポート 5277 から Android デバイスの同じポート番号にソケット接続を転送します。この構成により、DHU は、スマートフォンで実行されているヘッドユニット サーバーに TCP ソケット経由で接続できます。

    adb forward tcp:5277 tcp:5277
    
  10. SDK_LOCATION/extras/google/auto/ ディレクトリから desktop-head-unit.exe コマンド(Windows の場合)または ./desktop-head-unit コマンド(macOS または Linux の場合)を実行して、DHU を起動します。

    cd SDK_LOCATION/extras/google/auto
    desktop-head-unit.exe # Windows
    ./desktop-head-unit # macOS or Linux
    

    開発マシンで起動された DHU

  11. モバイル デバイスを DHU に初めて接続する場合は、モバイル デバイスの画面を確認して利用規約に同意し、必要に応じて権限の設定を調整します。

DHU が起動したら、DHU コンソール コマンドを使用してアプリを実行およびテストできます。

コマンドライン オプション

デフォルトでは、ヘッドユニット サーバーはポート 5277 経由で接続します。ホストまたはポートをオーバーライドするには(たとえば、SSH で転送するため)、--adb=<[localhost:]port> フラグを使用します。次に例を示します。

./desktop-head-unit --adb=5999

デフォルトでは、DHU は、タッチ スクリーンのユーザー インターフェースを使用する Android Auto 互換ヘッドユニットをエミュレートします。マウスで DHU をクリックして、ユーザーのタップ操作をシミュレートできます。入力にロータリー コントローラを使用するヘッドユニットをエミュレートするには、-i controller フラグを使用します。次に例を示します。

./desktop-head-unit -i controller

DHU がロータリー コントローラ モードの場合、キーボード ショートカットを使用して、コントローラの操作をシミュレートできます。詳細については、ロータリー コントローラをご覧ください。ロータリー コントローラ モードでは、DHU はマウスクリックを無視するので、シミュレートされたロータリー コントローラ操作で Android Auto を操作する必要があります。

オプション 説明
-c--config=FILE 指定された構成 .ini ファイルを使用します。詳細については、DHU を構成するセクションをご覧ください。
-i--input=INPUT 指定された入力モード(touchrotaryhybrid のいずれか)を使用します。
-a--adb=HOSTPORT ADB トランスポートを使用します(省略可、host:port または port)。デフォルトはポート 5277 です。
-a--usb=DEVICE_ID USB(AOA)トランスポートを使用します(省略可、DEVICE_ID)。
-v--version バージョン情報を表示します。
-l--licenses オープンソース ライセンスを表示します。
-h--headless ヘッドレス モードで実行します(UI なし)。
-t--always_show_window_on_top DHU ウィンドウを他のウィンドウの上に表示します(デフォルトでオフ)。
-?--help このヘルプリストを表示します。

DHU ユーザーガイド

このセクションでは、DHU のバージョン 2.0 でサポートされている機能と、その使用方法について説明します。

コマンドは、DHU を起動したターミナル ウィンドウに入力します。複数のコマンドを同じ行で実行するには、コマンドを ; で区切ります。

システム

コマンド キー 説明
help [command] コマンドの完全なセットを表示します。コマンド名(例: help day)を指定すると、そのコマンドのヘルプが表示されます。
quit
exit
Alt+Q ヘッドユニットを終了します。
sleep [seconds] 1 秒間スリープします。seconds で遅延時間を指定すると、その分だけスリープ状態になります。これは CI 環境でのヘッドユニットのスクリプティング(./desktop-head-unit < script.txt)などに使用できます。
screenshot filename.png スクリーンショットを filename.png. に保存します。
licenses DHU で使用されているライブラリのライセンスを表示します。
keycode keycode keycodeキーコード セクションにリストされている名前のいずれか)を送信します。

タップとタッチパッド

タップまたはタッチパッドが有効になっているときに、ディスプレイ ウィンドウ(タップの場合)またはタッチパッド ウィンドウ(タッチパッドの場合)をクリックすると、タップイベントとして登録されます。

タップの場合、1 本目の指の場所を右クリックしてから、2 本目の指の場所で右ボタンを長押しすることで、マルチタッチをシミュレートできます。2 本の指の中心点は固定されるため、マウスを動かすことによって中心点の周りを回転させたり、ピンチイン / アウトしたり、あるいはその両方を行うことができます。

タッチパッドの場合、左ボタンを長押しすると、画面上のさまざまな UI 要素をスクロールできます。右ボタンをクリックすると、現在フォーカスのある要素を選択できます。

コマンド キー 説明
tap x y 指定された座標でタップイベントをシミュレートします。

ロータリー コントローラ

DHU はロータリー コントローラをサポートしています。ロータリー コントローラを有効にすると、次の操作がサポートされます。

  • D-pad で上下左右に動かす
  • 時計回り / 反時計回りに回転する
  • 回転フリックを行う(一度に 5 つのステップ)
  • コントローラをクリックしてコントローラに戻る

コマンドとキー バインディングを以下に示します。

マウスをスクロールすると dpad rotate コマンドが送信され、マウスの中央ボタン(通常はスクロール ホイール)をクリックすると dpad click コマンドが送信されます。

ほとんどの車にはタッチ スクリーンが搭載されています。ロータリー コントローラのみに対応している車もあれば、タップとコントローラの両方に対応している車もあります。また、車によっては、地図のパンやテキスト入力に使用できるタッチパッドもサポートしています。異なる車載ヘッドユニットをシミュレートする場合は、これらの構成の違いを考慮してください。

コマンド キー 説明
dpad {up|down|left|right} 矢印キー ロータリー コントローラの操作。
dpad {ur|dl|ul|dr} ロータリー コントローラの操作。
dpad soft {left|right} Shift+矢印キー 一部のロータリー コントローラで利用可能なサイドボタン。
dpad click Return ロータリー コントローラを押す操作。
dpad back Backspace 一部のロータリー コントローラの下部にある戻るボタン。
dpad rotate left 1 ロータリー コントローラを左(反時計回り)に回転する操作。
dpad rotate right 2 ロータリー コントローラを右(時計回り)に回転する操作。
dpad flick left Shift+1 ロータリー コントローラを反時計回りに高速回転する操作。
dpad flick right Shift+2 ロータリー コントローラを時計回りに高速回転する操作。
dpad 0-9*#+ テンキー

マイク

DHU は、音声入力や録音済みの音声トラックの再生にマイクを使用することをサポートしています。開発の便宜を図るため、一般的な音声コマンドに対応する以下のサウンド ファイルが用意されています。これらのサウンド ファイルは、SDK_LOCATION/extras/google/auto/voice/ ディレクトリにインストールされます。

ファイル名 テキスト
navhome.wav 「Navigate to home(自宅までナビして)」
navwork.wav 「Navigate to work(職場までナビして)」
navsoh.wav 「Navigate to Sydney Opera House(シドニー オペラハウスまでナビ開始)」
navgoogle.wav 「Navigate to 1600 Amphitheatre Parkway, Mountain View(1600 Amphitheatre Parkway, Mountain View までナビ開始)」
exitnav.wav 「Exit navigation(ナビを終了)」
howlong.wav 「How long until I get there?(到着するまでどれくらいかかる?)」
showtraffic.wav 「Show traffic(交通状況)」
showalternateroute.wav 「Show alternate routes(別のルートを表示)」
pause.wav 「Pause music(音楽を一時停止)」
nextturn.wav 「When is my next turn?(次はどこで曲がる?)」

DHU プロンプトで個々の .wav ファイルを実行するには:

mic play /path/to/filename.wav
コマンド キー 説明
mic begin M マイクをアクティブにして(ハンドルボタンをクリックするのと同じ)、コンピュータのマイクからの入力を待ちます。
mic play filename.wav マイクをアクティブにして、指定された WAV ファイルの録音を再生します。 注: 再生される WAV ファイルは聞こえませんが、Android Auto からの応答は聞こえます。
mic repeat mic play で最後に使用された録音を繰り返します。
mic reject {on|off} マイクのリクエストの拒否を有効または無効にします。有効にすると、マイクのリクエストはすべて拒否されます。

センサー

DHU では、以下のコマンドで車両のセンサーデータの変化をシミュレートできます。センサーデータを模擬して Android Auto に送信するには、DHU の起動時に、構成ファイル(.ini)で対応するセンサーを有効にする必要があります。

コマンド 説明
fuel [percentage] 燃料残量を指定の割合に設定するか、値を渡さずに燃料残量を無効にします。
range [km] 範囲を指定のキロメートルに設定するか、値を渡さずに範囲データを無効にします。
lowfuel [{on|off}] 燃料不足警告センサーを設定するか、値を渡さずにセンサーを無効にします。
accel [x] [y] [z] 加速度計を指定の x、y、z の値(m/s^2)に設定するか、パラメータを渡さずに加速度計のデータを設定解除します。必要に応じ、NAN を渡して任意のパラメータをスキップします。
compass bearing [pitch] [roll] コンパスを指定の方向、ピッチ、ロールの値(度)に設定します。必要に応じ、NAN を渡して任意のパラメータをスキップします。
gyro [x] [y] [z] ジャイロスコープを指定の x、y、z の回転速度(rad/s)に設定するか、パラメータを渡さずにジャイロスコープ データを設定解除します。必要に応じ、NAN を渡して任意のパラメータをスキップします。
location lat long [accuracy] [altitude] [speed] [bearing] 任意の精度(m)、標高(m)、速度(m/s)、方角(度)とともに、位置情報を指定の経度と緯度に設定します。必要に応じ、NAN を渡して任意のパラメータをスキップします。
odometer km [current_trip_km] 任意の現在トリップ値(km)とともに、オドメーターを指定のキロメートルに設定します。
speed [speed] 車両速度を指定の値(m/s)に設定するか、値を渡さずにセンサーを無効にします。
tollcard {insert|remove} 通行料金カードが挿入されているか、取り出されているかを示します。

日中 / 夜間モード

DHU では、次のコマンドとキー バインディングによって、日中モードと夜間モードの切り替えをシミュレートできます。

コマンド キー 説明
day Shift+N 日中モード(高輝度、フルカラー)を有効にします。
night Ctrl+N 夜間モード(低輝度、高コントラスト)を有効にします。
daynight
nightday
N 現在のモード(日中 / 夜間)を切り替えます。

フォーカス管理

DHU では、以下のコマンドで、Android Auto がヘッドユニットにフォーカスしているかどうかをシミュレートできます。

コマンド 説明
focus video {on|off|toggle} Android Auto でヘッドユニットに動画フォーカスをするかどうかを設定します。動画フォーカスをオフにすると、ヘッドユニットがネイティブ モードになる動作がシミュレートされます。
focus audio {on|off|toggle} Android Auto でヘッドユニットに音声フォーカスをするかどうかを設定します。音声フォーカスをオフにすると、ヘッドユニットが独自の音源を再生する動作がシミュレートされます。
focus nav {on|off|toggle} Android Auto でヘッドユニットに操作フォーカスをするかどうかを設定します。操作フォーカスをオフにすると、ヘッドユニットが独自の操作システムを実行する動作がシミュレートされます。

制限と運転状況

DHU では、車両の移動時における特定の制限(キーボードの無効化やスマートフォンの設定の禁止など)をシミュレートできます。

コマンド キー 説明
restrict none U すべての制限を無効にします。
restrict all Shift+U すべての制限を有効にします(運転をシミュレートする場合など)。

インストルメント クラスタ

DHU では、ナビゲーション中に次の曲がり角に関する基本的な情報(次の道路名、距離や時間、右折 / 左折の矢印など)と、現在行われている通話に関する情報を表示するインストルメント クラスタ(通常はハンドルの背後にある)をエミュレートできます。

DHU のインストルメント クラスタ ウィンドウにナビゲーションと通話の両方の情報が表示されている

この機能を有効にするには、構成ファイルの [general] セクションの instrumentcluster エントリを使用するか、各機能を個別に制御するための navcluster エントリまたは phonecluster エントリを使用します。

[general]
...
instrumentcluster = true

クラスタ ディスプレイ

一部の車両は、地図タイルなどの豊かな視覚的情報を表示できるクラスタ ディスプレイを搭載しています。DHU のバージョン 2.1(現在は Android Studio ベータ版アップデート チャンネルで入手可能)以降では、このようなディスプレイを開発用マシンでエミュレートできます。

このエミュレーションを行うには、クラスタ [display] セクションのある構成ファイルを使用します。[display] セクションは、ファイルの [general] セクションで構成したメイン ディスプレイと同じビデオ設定オプションをサポートします。

図 3. セカンダリ クラスタ ディスプレイで DHU を実行しているときのメイン画面。
図 4: セカンダリ クラスタ ディスプレイで DHU を実行している場合のクラスタ画面。
...

# The display name following the colon can be whatever you like.
[display:cluster]
# Setting the displaytype as cluster is what lets the DHU know how to handle it.
displaytype = cluster
resolution = 800x480
dpi = 160
...

この構成は、既存の .ini ファイルに直接追加することも、DHU の起動時に個別のファイルに収めて複数の構成ファイルを渡すことで再利用することもできます。複数の構成ファイルを使用する場合、後で値を定義すると、以前の定義がオーバーライドされます。

# Launch your landscape configuration with your cluster display configuration
./desktop-head-unit -c landscape.ini -c cluster.ini

# Launch the portait configuration with the same cluster display configuration
./desktop-head-unit -c portrait.ini -c cluster.ini

メディアの再生ステータス

DHU では、メディアの再生ステータス(再生中の曲名など)に関する追加情報を表示できます。

DHU のメディア再生ステータス ウィンドウに再生情報が表示されている

これは、[general] セクションの playbackstatus エントリを使用して有効にできます。

[general]
...
playbackstatus = true

キーコード

DHU には、さまざまな車両で一般に利用可能なショートカット ボタンをシミュレートする一連のデフォルト キーコードが用意されています。たとえば、home キーコードは DHU プロンプトで次のようにトリガーできます。

keycode home
キーコード 説明
home ホーム画面に移動します。
back 前の画面に戻ります。
call
endcall
電話をかけたり、通話を終了したりします。
search 検索をトリガーします。
media_play_pause
media_play
media_pause
メディアを再生または一時停止します。
media_next
media_previous
次または前のメディア トラックに移動します。
media デフォルトのメディアアプリに移動します。
navigation デフォルトのナビゲーション アプリに移動します。
tel デフォルトの電話アプリに移動します。

DHU を構成する

DHU は構成 .ini ファイルの変更をサポートしています。そのため、ヘッドユニットがスマートフォンからリクエストする使用可能な入力モード(タップ、コントローラ)、フレームレート、解像度、DPI をこのファイルで変更できます。

構成ファイルのデフォルトの場所は ~/.android/headunit.ini です。システム上のヘッドユニットの構成を変更する場合は、このファイルを変更します。

-c フラグを使用して、読み込む構成ファイルを指定することもできます。

./desktop-head-unit -c /path/to/config.ini
構成の例
[general]
touch = true
touchpad = false
controller = false
instrumentcluster = false
resolution = 800x480
dpi = 160
framerate = 30
fueltypes = unleaded,electric,hydrogen
evconnectors = supercharger

SDK_LOCATION/extras/google/auto/config/ フォルダに、さまざまなヘッドユニットの設定を実際に使用してテストできるサンプル構成ファイルが用意されています。より高度なユースケースについては、以下のサポートされている設定をご覧ください。

入力構成
名前 デフォルト 説明
inputmode default String 入力モードを定義します。touchrotaryhybrid の各オプションは、タッチスクリーンとロータリーのサポートの有効 / 無効を切り替えるとともに、適宜デフォルトのキーコードを設定します。default の場合、下の touch オプションと controller オプションに従います。
controller false Boolean ロータリー コントローラの入力を有効にします。inputmodedefault でない場合は無視されます。
touch true Boolean タッチスクリーンを有効にします。inputmodedefault でない場合は無視されます。
touchpad false Boolean タッチパッドを有効にします。
touchpadnavigation false Boolean タッチパッドを有効にして UI ナビゲーションに使用できるようにします。
touchpadtapasselect false Boolean true の場合、タッチパッドのタップは選択イベントになります。
touchpaduiabsolute false Boolean touchpadnavigationtrue の場合、タップを絶対として扱うか、ジェスチャーとして扱うかを設定します。
動画構成

Android Auto は 3 つの動画解像度をサポートしています。

  1. 480p(800x480、デフォルト)
  2. 720p(1280x720)
  3. 1080p(1920x1080)

上記以外のアスペクト比をサポートするために、ヘッドユニットでは必要に応じてレターボックスとピラーボックスのマージンを指定できます。たとえば、1000×600 の画面が必要な場合は、解像度を 720p(1280x720)、マージンの幅を 280、マージンの高さを 120 に設定します。これにより、左端と右端に 140 ピクセル、上端と下端に 60 ピクセルのマージンが追加されます。

一般的な 6 インチの画面(750×450)をエミュレートする場合の構成例:

[general]
...
resolution = 800x480
marginwidth = 50
marginheight = 30

ワイドスクリーンの場合:

[general]
...
resolution = 1280x720
marginwidth = 0
marginheight = 220
名前 デフォルト 説明
resolution 800x480 String 800x4801280x7201920x1080 のいずれかです。
dpi 160 Integer
normalizedpi false Boolean true の場合、大きい DPI 値に合わせて DHU のウィンドウ サイズを縮小します。false の場合、DPI 値が大きいほどウィンドウが大きくなります(実際のディスプレイは再現されませんが、映像コンテンツを検査しやすくなります)。
realdpi 160 Integer 動画構成で使用されます。
framerate 30 Integer 動画構成で使用されます。
marginheight 0 Integer 動画構成で使用されます。
marginwidth 0 Integer 動画構成で使用されます。
margins 0,0,0,0 String 動画構成で使用され、marginwidthmarginheight をオーバーライドします(指定されている場合)。形式は、上、下、左、右です。
contentinsets 0,0,0,0 String 動画構成で使用されます。形式は、上、下、左、右です。
stablecontentinsets 0,0,0,0 String 動画構成で使用されます。デフォルトは contentinsets の値に設定されます。形式は、上、下、左、右です。
cropmargins false Boolean marginsmarginheight、または marginwidth が指定されている場合、この設定の値を true にすると、表示される動画からこれらのマージンが削除されます。そのため、エンドユーザーに表示される画面に近い状態で確認できます。
pixelaspectratio 1.0 Float 動画構成で使用されます。
センサーの構成

センサーデータを模擬して Android Auto に送信するには、以下のオプションを使用して対応するセンサーを有効にする必要があります。センサーが無効になっている場合、そのセンサーについて DHU コマンドを使用して送信されたデータは無視されます。

名前 デフォルト 説明
accelerometer false ブール値 加速度計センサーデータを有効にします。
compass false ブール値 コンパス センサーデータを有効にします。
driving_status false ブール値 運転状況センサーデータを有効にします。
fuel false ブール値 燃料センサーデータを有効にします。
gyroscope false ブール値 ジャイロスコープ センサーデータを有効にします。
location false ブール値 車両位置情報センサーデータを有効にします。
night_mode false ブール値 夜間モード センサーデータを有効にします。
odometer false ブール値 オドメーター センサーデータを有効にします。
speed false ブール値 速度センサーデータを有効にします。
toll_card false ブール値 通行料金カード センサーデータを有効にします。
その他
名前 デフォルト 説明
instrumentcluster false Boolean インストルメント クラスタを有効にします。ナビゲーションとスマートフォンのステータスを表示するウィンドウを UI に追加します。
navcluster false Boolean インストルメント クラスタを有効にします。ナビゲーションのステータスを表示するウィンドウを UI に追加します。
phonecluster false Boolean インストルメント クラスタを有効にします。スマートフォンのステータスを表示するウィンドウを UI に追加します。
playbackstatus false Boolean 再生ステータスを有効にします。再生ステータス メッセージを表示するウィンドウを UI に追加します。
driverposition left String leftcenterright のいずれかです。
windowleft Integer メイン ウィンドウの左端の位置を設定します。
windowtop Integer メイン ウィンドウの上端の位置を設定します。
fueltypes unleaded 文字列 次のうち 1 個以上を指定します(カンマ区切り)
  • unleaded
  • leaded
  • diesel-1
  • diesel-2
  • biodiesel
  • e85
  • lpg
  • cng
  • lng
  • hydrogen
  • electric
  • other
  • unknown
evconnectors 文字列 次のうち 0 個以上を指定します(カンマ区切り)
  • j1772
  • mennekes
  • chademo
  • combo-1
  • combo-2
  • roadster
  • hpwc
  • gbt
  • supercharger
  • other
  • unknown
fueltypeselectric が含まれている場合にのみ設定する必要があります。

トラブルシューティング

初回接続時、DHU に空白の画面が表示される

これは既知の問題であり、解決に向けて取り組んでいるところです。この問題を回避するには、次のようにします。

  1. DHU を閉じます。
  2. DHU を実行するのステップ 5 に沿って、ヘッドユニット サーバーを停止し、再起動します。
  3. DHU をもう一度起動します。
  4. スマートフォンの画面に、権限を付与する追加のステップが表示されることがあります。それらのステップを完了すると、DHU がもう一度シャットダウンする可能性があります。
  5. DHU を再起動します。

Android Automotive OS 用のアプリをテストする

Android Emulator を使用して、アプリが Android Automotive OS でどのように動作するかをテストできます。このセクションでは、アプリをテストする際の Android Virtual Device(AVD)のセットアップ方法について説明します。

メディアアプリの実行構成を編集する

Automotive OS アプリのメディアアプリは、他の Android アプリとは異なります。Android Automotive OS は、明示的インテントを使用して、メディア ブラウザ サービスに呼び出しを送信することによってメディアアプリと対話します。

アプリをテストするには、アプリのマニフェストに起動アクティビティがないことを確認し、次の手順に沿って自動車モジュールがアクティビティで起動しないようにします。

  1. Android Studio で、[Run] > [Edit Configurations] を選択します。

    [Run/Debug Configurations] ダイアログ ボックス。

  2. アプリのモジュールのリストから、自動車モジュールを選択します。

  3. [Launch Options] > [Launch] で、[Nothing] を選択します。

  4. [Apply]、[OK] の順にクリックします。

システム イメージを追加する

特定のメーカーのハードウェアに一致する AVD を作成するには、Android Studio SDK Manager を使用してデバイスのシステム イメージを追加する必要があります。次に、AVD を作成する際に、追加したシステム イメージをダウンロードして、AVD で使用できるようにします。

自動車メーカーのシステム イメージを追加する

GM、ホンダ、Polestar、Volvo などの OEM 固有のシステム イメージを追加できます。OEM のデベロッパー サイトに記載されている手順に沿って行ってください。

以下に、アルファベット順で示します。

  1. GM
  2. ホンダ
  3. Polestar
  4. Volvo

Generic System Image をインストールする

Android Studio には、Android Automotive OS 用の Generic System Image も含まれており、これを使用してアプリをテストすることもできます。この Generic System Image には、アプリの統合をテストできるように Google アシスタントが組み込まれています。

Generic System Image をインストールする手順は次のとおりです。

  1. Android Studio で、[Tools] > [SDK Manager] を選択します。
  2. [SDK Platforms] タブをクリックします。
  3. [Show Package Details] をクリックします。
  4. [Android 9.0(Pie)] で、[Automotive Intel x86 Atom System Image] を選択します。
  5. [Apply]、[OK] の順にクリックします。

    SDK プラットフォーム コンポーネントのリストで Generic System Image を選択した状態。

車の AVD を作成してエミュレータを実行する

以下の手順に沿って、Android Automotive OS 搭載車を表す Android Virtual Device(AVD)を作成し、その AVD を使用してエミュレータを実行します。

  1. Android Studio で、[Tools] > [AVD Manager] を選択します。
  2. [Create Virtual Device] をクリックします。
  3. [Select Hardware] ダイアログで [Automotive] を選択し、デバイスを選択して [Next] をクリックします。
  4. Android 9.0(Automotive)など、自動車をターゲットとするシステム イメージを選択して、[Next] をクリックします。
  5. AVD に名前を付け、カスタマイズするその他のオプションを選択して、[Finish] をクリックします。
  6. ツール ウィンドウ バーから、デプロイのターゲットとして Android Automotive OS AVD を選択します。
  7. 実行アイコン 実行アイコン をクリックします。

メディアアプリのその他のテスト要件

メディアアプリをテストする場合は、Android Auto と Android Automotive OS のいずれかまたはその両方でアプリをテストするだけでなく、このセクションで説明するシナリオもテストする必要があります。

MediaBrowserService の起動シナリオをテストする

ドライバーと乗客の安全を守るために、ユーザーが運転中に行えるアプリの操作には追加の制限が設けられています。そのため、Android Auto と Android Automotive OS には、ユーザーが運転中も引き続きアプリを利用できるように、アプリが対処する必要がある MediaBrowserService の起動シナリオがいくつか用意されています。

アプリが次の各シナリオに対処できるかどうかをテストします。

  • Activity が開かれる前に MediaBrowserService が実行されている。
  • Activity を表示できないときに、MediaBrowserService が実行されている。
  • ユーザーがログインしていないときに、MediaBrowserService が実行されている。

上記のシナリオをテストする際に、次の方法を試してください。

  • メディアアプリを強制停止してから、Android Auto または Android Automotive OS を起動する。
  • メディアアプリのデータを消去してから、Android Auto または Android Automotive OS を起動する。

また、必要に応じて適切なエラー メッセージを設定します。

メディア テストツール

メディア コントローラ テストアプリでは、Android で複雑なメディア再生をテストして、メディア セッションの実装を検証できます。このツールの使用方法については、メディア コントローラ テストアプリの使用をご覧ください。