
Android Auto対応アプリを作成するにあたり、普通のスマートフォン向けとは異なりAndroid Autoヘッドユニットサーバエミュレータが必要となります。これは必須とまでは言えませんが、Android Auto実機で動作試験を行うよりエミュレータの方が簡単ですし、Android Auto実機ではリファレンスどおりの動作が行われない可能性があります。また、Android Autoでナビゲーションを行うアプリは動作確認用のオートドライブに対応する処理をアプリに組み込む必要があります。このオートドライブはGoogle Playでのアプリ審査で使用されるため、Google Playでアプリを公開するには実装は必須となります。Android Auto対応アプリであってもナビを行う機能がなければ不要です。このAndroid Autoエミュレータとオートドライブテストの使い方をすぐに忘れてしまうので備忘録として書くことにしました。

Android StudioではAndroid Autoヘッドユニットサーバのエミュレータを簡単にインストールすることが可能です。

「設定」の左列のツリーから「言語&フレームワーク」から「Android SDK」を選択します。
右列の上部から「SDK Tools」タブを選択します。
「Android Auto Desktop Head Unit Emulator」を選択し、インストールを実行します。またはステータスが「Installed」であることを確認します。Android Studioでのインストールは基本的には以上です。(OS環境によっては面倒な場合があります)
インストールが終わったら、Android Autoヘッドユニットサーバエミュレータの使用/動作自体にはAndroid Studioの起動は不要です。(Android Studioが起動していても構いません)

スマートフォン側はデベロッパーモードを有効化します。
開発中のアプリをインストールしたスマートフォンのAndroid設定からデバイス情報を表示するメニューを開きます。スマートフォンブランドや機種によってメニューの配置は異なることがあります。

「ソフトウエアバージョン」を7回連打することでデベロッパーモードがオンになります。

Android設定メニューからシステム管理系のメニューを開きます。または設定メニューの最上位階層に「開発者オプション」があるブランド/モデルもあります。

デベロッパーモードがオンの状態では「開発者オプション」という項目が表示されるようになっているので開きます。

「開発者オプション」のスイッチをオンにします。ブランド/モデルによっては確認画面が表示されるので承認する必要があります。

オートドライブ機能を利用する場合はadbを利用するため「USBデバック」のスイッチをオンにします。

Android Autoの設定を変更するのでAndroid設定から「その他の接続」などの子メニューを開きます。スマートフォンのブランド/モデルによっては違う項目の可能性があります。
「Android Auto」を開きます。または古いスマートフォンやAndroid Autoアプリ非搭載モデルGoogle PlayからAndroid Autoアプリをインストール後にアプリドロワーなどからAndroid Autoアプリを起動します。

スマートフォンのAndroid Autoアプリのメイン画面の下部にある「バージョン」を10回連打します。

Android Autoのデベロッパー向け設定を有効化する確認を求められるので「OK」をタップします。

Android Autoのメインメニューの右上のメニューアイコンをタップし、「ヘッドユニットサーバーを起動」をタップします。この項目はAndroid Autoデベロッパモードがオンの場合だけに表示されます。
今回はデベロッパーモードを有効化する手順でしたが、動作テストなどが完了した場合にはヘッドユニットサーバーを停止してからこの画面に表示されている「デベロッパーモードを終了」をタップしてデベロッパーモードを無効化します。

Android StudioやAndroid AutoヘッドユニットサーバエミュレータをインストールしたPCとスマートフォンをUSBケーブルで接続します。
この記事の最初でインストールしたヘッドユニットエミュレータを起動します。
PC上でターミナルを開いて以下のコマンドを実行します。(画像ではホームディレクトリ下の~/Android/Sdk/extras/google/autoに移動してからdesktop-head-unitを実行しています。)
コマンドを実行すると以降逐次メッセージが表示され続けます。このターミナルはそのままにしておきます。
$ ~/Android/Sdk/extras/google/auto/desktop-head-unit -u
コマンドを実行すると以降逐次メッセージが表示され続けます。このターミナルはそのままにしておきます。

デスクトップにAndroid Autoヘッドユニットサーバエミュレータのウインドウが開きます。

Android Autoの画面が表示されたら、その画面を操作するなどして動作確認を行う(開発中の)アプリなどを表示します。

今回は開発中のBackseat co-Driverアプリの例を挙げます。今回は、文字入力で目的地を入力するのでアプリ画面の「検索」ボタンをタップします。またはAndroid Autoに表示されているマイクボタンをタップしてから音声入力で目的地を入力することも可能です。音声入力では「○○までナビ」などと言います。

文字入力パッドが表示されます。ただし、Android Autoで表示されるパッドは日本語変換できないため、まずは入力用テキストボックスに1文字以上を入力します。これがトリガーとなり、スマートフォンの画面に文字入力パッドが表示されます。スマートフォン側では日本語の漢字変換が可能なためスマートフォンで目的地の入力を完了させます。このとき、スマートフォンに文字入力パッドが開かれない場合は、Android Autoの文字入力パッドに表示されるスマートフォンに矢印が描かれたアイコンをタップします。このアイコンが有効になっていない状態ではスマートフォンで文字入力を行うことはできません。

スマートフォンに表示される文字入力パッドで文字を入力して日本語の漢字変換を行い目的地入力を完了させます。今回は「浅草橋駅」と入力しました。

Android Auto画面の地図に青いラインが引かれ、案内が始まります。ただし、位置が変化しないためスタート地点から移動しないままです。ロケーション変更アプリで移動を試すことは可能ですが、今回はGoogle Playから実装を指定されたテスト用オートドライブ機能で移動を行います。

必ず、案内が開始されてからオートドライブを実行します。
新しいターミナル画面で、adb shellコマンドを実行します。
$ adb shell dumpsys activity service com.gatolabo.backseat_co_driver/.service.BackseatCarAppService AUTO_DRIVE
開発中のBackseat co-Driverアプリではこのように入力することでオートドライブが開始されます。このコマンドが機能するためにはオートドライブのための実装がアプリ側で行われている必要があります。

Android Autoのアプリ画面上に、「Simulation Mode (Auto Drive) Enabled Navigation」という表示が数秒発生します。

自動的にナビのルートに沿って移動が行われるので、案内中にカードやTTSによるターンバイターンの案内が行われることを確認します。/p>

次の曲がり角までの距離や目的地までの距離、目的地までの時間の目安などを表示することも可能なようです。この記事を書いている時点では、Backseat co-Driverアプリには次の曲がり角までの距離以外の実装が完了していません。
このオートドライブでの移動中の案内が正しく行われることがGoogle Playでのナビ実装が適切に行われているかの審査対象のようです。つまり、オートドライブでテストして正しく動作しているように見えれば良いともいえます。
とにかく、Android Autoに正式対応するためにはいろいろ実装しなければならず大変といえます。Backseat co-Driverアプリではナビ機能なんて実装したくなかったのですが、Android Autoでは頻繁にTTSによる発声を行うためには地図表示によるナビ機能が必要だということでかなり大掛かりに増築することになりました。(Android Autoではナビアプリでなければ頻繁なTTS利用が許されないようです)
- Android Auto対応アプリ開発用エミュレータと試験用オートドライブの使い方
- 地図情報を読み上げてドライバーに知らせる新アプリBackseat co-Driver
- ヘッドユニットTS20のTLINKをZLINK 6に更新してAndroid Autoで接続してみた
- UIS7870搭載のAndroidヘッドユニット TS20用のTPMSセンサーを使ってみた
- UIS7870搭載のAndroidヘッドユニット TS20用にSR ADASカメラとTPMSセンサーを買ってみた
- UIS7870搭載の中華Androidナビ TS20の360カメラ設定
- UIS7870搭載のAndroidナビ(ヘッドユニット) TS20を買ってみた
- Googleマップをドライブモードで起動する新アプリ Drive Mode Launcher
- PinP対応の高機能カーランチャーアプリLecoauto Launcher
- ナビのマウント金具を樹脂製ブラケットに取り替えてみた


















