Android Autoおさらい
Android Autoとは、Google I/O 2014で発表された、車載用のAndroidプラットフォームです。タッチ入力による操作や音声によるハンズフリー操作によって、ドライバーをアシストするための機能を提供すると同時に、サードパーティ製アプリによって拡張可能となっています。
昨年6月の発表では、近日SDKを公開するとされていましたが、11月になってようやくAPIが公開されました。そのAndroid Autoですが、今年3月19日にパイオニアから対応端末が北米で発売され、正式にリリースとなりました。
実は、車載システムとAndroidスマートフォンの連携という意味では、これが初めてではありません。2011年11月頃からMirrorLinkという規格があり、GALAXY S3など、対応したスマートフォンも発売されており、対応したアプリも公開されています。
しかし、MirrorLinkでは、Android端末もMirrorLinkに対応する必要がありました。Android Autoでは、Android 5.0以上の端末は基本的にすべて対応していますから、今後はAndroid Autoへとシフトしていくかもしれません。
また、AppleのCarPlayも今年中に各自動車メーカーによって搭載車が発売されるでしょう。モバイル分野では当面、車載器をめぐる三つどもえの争いが繰り広げられることになります。
Android AutoとMirrorLink
MirrorLinkでは、スマホナビ対応ディスプレイにUSBでスマートフォンを接続することで対応したアプリが表示され、車載器からこうしたアプリを操作できるようになります。MirrorLinkは基本的に、スマートフォンの画面を車載器にミラーリングします。 ですから、車載器にはスマートフォンの画面がそのまま表示され、同様の操作感でアプリを操作できます。
これと比べると、Android Autoのコンセプトは少し異なっています。Android Autoでは、スマートフォンの画面を車載器に写すわけではありません。むしろ、サードパーティのアプリは、Android Autoに対応するにあたって、画面やUIを作成する必要はありません。
また、専用のapkを作成するのではなく、リリース済みのアプリのapkに、Android Auto用のサービスなどを追加する形で対応します。この点でも、Android Autoは容易に対応できる利点があります。
一方で、Android Autoでは、できることに制限が設けられています。独自の体験を提供したいなど、Android Autoが想定していないことをしたい場合、難しいものになるでしょう。というのも、 Android Autoのデザインガイドラインを見ていただければ分かる通り、通常のアプリと比べてカスタマイズの余地がほとんどありません。
車載器で使用するということは、何かあった場合にドライバーの生命に関わることですから、仕方がないのかもしれません。同じ理由から、Android Auto対応アプリを配信するためには、iOSアプリのように審査を通す必要があります。この審査をパスするためにも、ガイドラインを順守する必要があります。
Android Autoのアーキテクチャ
もう少し詳しく、Android Autoのアーキテクチャについてのぞいてみましょう。
Android Autoと接続されたアプリは、Android AutoのProxyとして動作します。必要な処理はアプリ内で行い、ビデオストリームとオーディオストリームを車載器に送ります。車載器はそれを表示・再生します。
Android Autoとスマートフォンは、Android Auto Protocolと呼ばれるプロトコルで情報を送受信します。通常、自動車の寿命はスマートフォンより長く、更新も頻繁には行われません。そのため、処理をスマートフォンが肩代わりすることで、ドライバーはAndroid Autoの体験を最新の状態に維持できるのです。転送されるデータのフォーマットには、Googleのオープンな技術である、Protocol Bufferが使用されています。
Android Autoの使用や、ディスプレイ、オーディオの使用については、最終的に自動車側に決定権があるため、例えば自動車がバックを開始した場合に、後方カメラがそれまで使用していたアプリに割り込んで表示される、衝突防止のアラームが音楽再生に割り込むといったように、安全重視の制御を確保しています。
また、Android AutoはGoogle Play Servicesに含まれています。そのため、Google Play Servicesの更新によって、Android Autoは最新に保たれます。
Android Auto対応のための設定
では、実際に開発を行うための設定をしていきましょう。なお、Android Studioでの開発を想定しています。
まずSDK Managerを立ち上げ、Android Auto API Simulatorsをダウンロードしておきます。テストの際に必要になります。
build.gradleの修正
Android Auto向けのAPIは、Android 5.0(APIレベル21)で提供されました。そのため、Android Lollipop以上の端末でのみ、Android Autoに対応できます。また、targetSdkVersionも21以上に設定する必要があります。
加えて、メッセージアプリを開発する場合には、v4 support libraryに含まれる、NotificationCompat.CarExtenderが必要になります。必要であれば、加えておきましょう。
Auto XML設定ファイルの作成
Android Auto用の設定ファイルは、AndroidManifest.xmlとは別に作成します。「res/xml/」配下に、「automotive_app_desc.xml」という名前のファイルを作成します。
<automotiveApp> <uses name="media" /> </automotiveApp>
uses要素は、どのようなアプリを作成するかを指定します。現段階で作成可能なアプリは、以下の2つだけです。
- media:音楽やラジオなどの音声再生用のアプリです。
- notification:メッセージ通知を行うアプリです。ドライバーが通知を選択すると、内容が音声で読まれます。
また、音声入力で返信を行うこともできます。
続いて、manifestファイルにAuto XML設定ファイル用のメタデータを設定します。
<application> ... <meta-data android:name="com.google.android.gms.car.application" android:resource="@xml/automotive_app_desc"/> </application>
では、具体的にアプリを実装していきましょう。