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

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

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

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

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

このセクションでは、開発マシンに DHU をインストールして実行し、アプリをテストする方法を説明します。DHU のインストール後、adb 転送を介してスマートフォンを Android Auto アプリに接続することによってアプリをテストできます。

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

DHU をインストールする

DHU の最新バージョンは 2.0 rc2 です。このバージョンには、以前のバージョン(1.1)では利用できない機能が含まれているため、インストールして使用することをおすすめします。バージョン 2.0 rc2 で問題が発生した場合は、バージョン 1.1 をインストールしてください。

DHU バージョン 2.0 rc2 をインストールする

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

  1. デバイスの開発者向けオプションの有効化の説明に沿って、Android 6.0(API レベル 23)以上を搭載するモバイル デバイスでデベロッパー モードを有効にします。
  2. アプリをコンパイルしてデバイスにインストールします。
  3. デバイスに Android Auto をインストールします。Android Auto がすでにインストールされている場合は、最新バージョンを使用していることを確認してください。
  4. Android Studio を開き、Beta チャンネルを使用するように Android Studio を切り替えます。Android Studio を新しいバージョンに更新するように求められた場合、更新は無視してもかまいません。
  5. SDK Manager を開いて [SDK Tools] タブに移動し、Android Auto Desktop Head Unit エミュレータ パッケージのバージョン 2.0 rc2 をダウンロードします。

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

    DHU は、SDK_LOCATION/extras/google/auto/ ディレクトリにインストールされます。ダウンロードの終了後、他のツールの Beta チャンネル バージョンを使用しない場合は、Android Studio を Stable チャンネルに戻すことができます。

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

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

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

ldd --version

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

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

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

DHU バージョン 1.1 をインストールする

バージョン 2.0 rc2 に問題が発生した場合は、次の手順で開発マシンに DHU 1.1 をインストールします。

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

    DHU は、SDK_LOCATION/extras/google/auto/ ディレクトリにインストールされます。ダウンロードの終了後、他のツールの Stable チャンネル バージョンを使用しない場合は、Android Studio を別のアップデート チャンネルに戻すことができます。

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

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

Linux システムでバージョン 1.1 を実行している場合は、追加のライブラリをいくつかインストールする必要があります。portaudiolibpngsdl2sdl2_ttf ライブラリをインストールします。インストール手順は、Linux ディストリビューションによって異なります。たとえば、Debian 派生の Linux ディストリビューションでは、次のコマンドでライブラリをインストールします。

sudo apt-get install libsdl2-2.0-0 libsdl2-ttf-2.0-0 libportaudio2 libpng12-0

DHU を実行する

DHU をインストールしたら、USB 経由でスマートフォンとワークステーションを接続して、Android Auto アプリをテストできます。モバイル デバイスを開発マシンに接続し、Android Debug Bridge(ADB)経由でヘッドユニット サーバーへの接続をセットアップして、DHU を実行します。

トンネリングをセットアップして 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 を操作する必要があります。

DHU がサポートするコマンドライン オプションは、バージョン 2.0 rc2 と 1.1 のどちらを使用しているかによって異なります。

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

DHU ユーザーガイド(2.0 rc2)

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

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

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

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

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

この表示は、構成ファイルで playbackstatus エントリを使用することで有効にできます。

キーコード

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.1)

DHU コマンドにより、音声入力の再生や表示モード(日中 / 夜間)の切り替えなどの Android Auto 機能を使用して、アプリをテストできます。DHU を起動したターミナル ウィンドウから DHU にコマンドを発行できます。また、DHU ウィンドウを選択して、キーボード ショートカットでコマンドを発行することもできます。すべてのコントロールに対応する DHU のコマンドとキー バインディングのリストについては、DHU のコマンドとキー バインディングをご覧ください。

日中モードと夜間モードを切り替える

Android Auto は、昼と夜で異なるカラーパターンをサポートしています。日中モードと夜間モードの両方でアプリをテストする必要があります。次のいずれかの方法で、夜間モードと日中モードを切り替えられます。

  • DHU を起動したターミナルで daynight コマンドを実行する。
  • DHU ウィンドウを選択して N キーを押す。

マイクをテストする

DHU は、音声入力用のマイクの使用をサポートしています。録音済みの音声トラックを入力として扱うように DHU に指示することもできます。その場合、DHU は、マイクを通してトラックを聴いた場合と同様に動作します。

録音済みのサウンド ファイルを入力として使用するには、次のコマンドを入力します。

mic play <sound_file_path>/<sound_file>.wav

開発の便宜を図るため、一般的な音声コマンドに対応する以下のサウンド ファイルが用意されています。これらのサウンド ファイルは、<sdk>/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 のコマンドとキー バインディング

DHU は以下のコマンドをサポートしています。

表 1. コマンドとキー バインディング

カテゴリ コマンド サブコマンド 引数 キーボード ショートカット 説明
システム help [コマンド] コマンドの完全なセットを表示します。コマンド名(例: help day)を指定すると、そのコマンドのヘルプが表示されます。
quit Alt+q ヘッドユニットを終了します。
sleep [秒数] 1 秒間スリープします。引数を指定すると(例: sleep 30)、指定した秒数だけスリープします。 このコマンドは、DHU 用のスクリプトを作成する場合に役立ちます(コマンドラインから I/O リダイレクトを使用してスクリプトを実行できます。./desktop-head-unit < script.txt とすると、ファイル script.txt からコマンドが読み込まれます)。
screenshot filename.png スクリーンショットを filename.png に保存します。
マイク mic begin m マイクをアクティブにして(ハンドルのマイクボタンを押すのと同じ)、コンピュータのマイクからの入力を待ちます。
play filename.wav DHU が filename.wav を音声入力として扱い、ファイルのサウンドがマイクを通して中継された場合と同様に動作するようにします。再生されるサウンド ファイルは聞こえませんが、Android Auto からの応答は聞こえます。
repeat 同じサウンド ファイル パラメータで再度 mic play を呼び出した場合と同様に、最後の mic play コマンドを繰り返します。
Input dpad up
down
left
right
矢印キー ロータリー コントローラの操作をシミュレートします。
soft left
soft right
Shift+矢印キー 一部のロータリー コントローラで使用可能なサイドボタンを押す操作をシミュレートします。
click Return ロータリー コントローラを押す操作をシミュレートします。
back Backspace 一部のロータリー コントローラの下にある戻るボタンを押す操作をシミュレートします。
rotate left
rotate right
1
2
ロータリー コントローラを左(反時計回り)または右(時計回り)に回転する操作をシミュレートします。
flick left
flick right
Shift+1
Shift+2
ロータリー コントローラを左(反時計回り)または右(時計回り)に高速回転する操作をシミュレートします。
tap x y 指定された座標でタップイベントをシミュレートします。例: tap 50 100
日中 / 夜間 day Shift+N 日中モード(高輝度、フルカラー)を有効にします。
night Ctrl+N 夜間モード(低輝度、高コントラスト)を有効にします。
daynight n 現在のモード(日中 / 夜間)を切り替えます。

トラブルシューティング

初回接続時、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 で使用できるようにします。

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

現在、Polestar 2 と Volvo の OEM 固有のシステム イメージを追加できます。システム イメージを追加する手順は次のとおりです。

  1. Android Studio で、[Tools] > [SDK Manager] を選択します。
  2. [SDK Update Sites] タブをクリックします。
  3. 追加アイコン 追加アイコン をクリックします。
  4. [Name] と [URL] に次のように入力し、[OK] をクリックします。

    Name: Polestar 2 System Image

    URL: https://developer.polestar.com/sdk/polestar2-sys-img.xml

    Name: Volvo System Image

    URL: https://developer.volvocars.com/sdk/volvo-sys-img.xml

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

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. 実行アイコン 実行アイコン をクリックします。

スマートフォン画面でアプリをテストする

以下の手順に沿って、アプリをスマートフォンにサイドローディングしてテストします。

ステップ 1. Android Auto アプリで、デベロッパー モードと提供元不明のアプリを有効にする

  1. Google Play で入手可能な Android Auto アプリをスマートフォンにインストールします。Android Auto がすでにインストールされている場合は、最新バージョンを使用していることを確認してください。
  2. Android Auto アプリで、ハンバーガー メニューをタップし、[設定] をタップします。
  3. 下の方にある [Android Auto について] セクションまでスクロールし、[バージョン] をタップして、すべてのバージョンと権限情報を表示します。
  4. [バージョンと権限情報] セクションを 10 回タップします。

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

  5. [OK] をタップします。
  6. 画面右上のその他アイコンをタップしてオーバーフロー メニューを開き、[デベロッパー向けの設定] をタップします。
  7. [アプリモード] をタップして、[デベロッパー] を選択します。

    アプリの画面がデベロッパー向けの設定のリストに戻ります。

  8. [提供元不明のアプリ] が表示されるまで下にスクロールして、チェックボックスをオンにします。
  9. Android Auto を再起動します。

ステップ 2: スマートフォンで USB デバッグを有効にする

  1. [設定] > [デバイス情報] で、[ビルド番号] を 7 回タップして、開発者向けオプションを有効にします。
  2. [設定] > [開発者向けオプション] に戻り、[USB デバッグ] を有効にします。

ステップ 3. スマートフォンにアプリをインストールしてテストする

  1. USB 経由でスマートフォンをマシンに接続し、開発中のアプリをマシンに直接インストールできるようにします。adb devices コマンドを使用して、開発用コンピュータが USB 経由で接続されたデバイスを検出できることを確認します。
  2. デバイスをセットアップして USB 経由で接続したら、SDK の platform-tools/ ディレクトリに移動し、次のコマンドを実行してデバイスに .apk をインストールします。

    adb -d install path/to/your/app.apk
    

    これで、アプリをテストしてすべてが機能するかどうかを確認できます。

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

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

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

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

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

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

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

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

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

メディア テストツール

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