SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Yahoo! JAPAN 黒帯シリーズ

Android Autoのはじめ方

Yahoo! JAPAN 黒帯シリーズ 第3回 ~ 「Android技術黒帯」による車載用Androidプラットフォームの解説

  • X ポスト
  • このエントリーをはてなブックマークに追加

 ヤフー株式会社には、技術や制作の分野において専門性に優れたエキスパート人財を「黒帯」に認定し、その活動を手厚く支援する黒帯制度があります。「ある分野に突出した知識とスキルを持っているその分野の第一人者」が黒帯として認定され、褒賞金と活動予算が付与され、それぞれの分野のエバンジェリストとして社内外で活躍します。この黒帯によるリレー連載として、第3回は「Android技術黒帯」が執筆します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

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をダウンロードしておきます。テストの際に必要になります。

SDK Managerからダウンロード
SDK Managerからダウンロード

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>

 では、具体的にアプリを実装していきましょう。

次のページ
音楽再生アプリの実装

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Yahoo! JAPAN 黒帯シリーズ連載記事一覧

もっと読む

この記事の著者

森 洋之(ヤフー株式会社)(モリ ヒロユキ)

ヤフー株式会社 ヤフオク!カンパニー開発本部 サービス開発部 黒帯 Android 技術1982年広島県生まれ。Androidアプリの個人開発などを経て、2012年ヤフー株式会社入社。「ヤフオク!」などのAndroidアプリ開発に携わる。2014年10月にAndroid技術の分野で黒帯に認定される。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8711 2015/06/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング