android autoについて - 株式会社ブリリアントサービ …. はじめに...

30
Android Autoについて version 1.0.0 PAGE 29 OF 0 ©2015 BRILLIANTSERVICE CO.,LTD.

Upload: voliem

Post on 14-Apr-2018

247 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

Android Autoについて version 1.0.0

PAGE 29 OF 0 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 2: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

目次

0. はじめに 0.1 改版履歴

1. Android Autoとは? 1.1概要

1.1.1 Android Auto 1.1.2 特徴

2. Android Autoの動作環境 2.1 Android Auto動作環境の構成 2.2 AndroidのVersionについて 2.3 シュミレータアプリのインストール 2.4 シュミレータアプリの起動

3. Android Auto APPについて 3.1 Android Autoでできること

3.1.1 AndroidAuto音楽再生 3.1.2 AndroidAutoNotification

3.2 Android Auto音楽再生アプリ作成手順 3.2.1 アプリケーション概要

3.2.1.1 通常の音楽再生アプリと違う点 3.2.2 アプリケーション作成手順

3.2.2.1 AndroidManifestの記載 3.2.2.2 専用リソースファイルの定義 3.2.2.3 サービスの実装 3.2.2.4 MediaSessionクラスについて 3.2.2.5 クラス変数とonCreate()の実装 3.2.2.6 onGetRoot()とonLoadChildren()の実装 3.2.2.7 再生処理の実装 3.2.2.8 MediaSessionクラスのコールバック 3.2.2.9 onDestory()の実装

3.3 Android Auto Notificationアプリ作成手順 3.3.1 アプリケーション概要 3.3.2 アプリケーション作成手順

3.3.2.1 AndroidManifestの記載 3.3.2.2 既読通知用のIntent設定 3.3.2.3 返信通知用のIntent設定 3.3.2.4 メッセージオブジェクトの設定 3.3.2.5 Nortificationオブジェクトの生成と送信 3.3.2.6 既読通知用のBroadcastReciever 3.3.2.7 返信通知用のBroadcastReciever 3.3.2.8 Nortificationの確認方法

4.今後の展望について

PAGE 29 OF 1 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 3: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

4.1アプリケーションについて 4.1.1 Googleが想定しているアプリケーションの構成 4.1.2 想定されるアプリケーションの使用例

4.2 懸念点 免責事項

PAGE 29 OF 2 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 4: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

0. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。 参考URL

Android Auto公式 http://www.android.com/auto/

Android Auto: The right information for the road ahead https://www.youtube.com/embed/Ht8yzpIV9M0

Android Auto Demo at Google I/O 2014 https://www.youtube.com/watch?v=K­zf6gdo23k

Google Developers Building Apps for Auto https://developer.android.com/training/auto/index.html

Devbytes Android Auto Audid https://www.youtube.com/watch?v=Q96Sw6v4ULg

0.1 改版履歴

日付 バージョン 内容

2015/03/13(金) 1.0.0 初版

PAGE 29 OF 3 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 5: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

1. Android Autoとは?

1.1概要

1.1.1 Android Auto Android Autoとは、Android端末とカーナビ等の車載器(テレマティクス)と連動するシステムで

す。 ユーザーは車載機の操作のみでAndroid端末と連携でき、サービス、メールの確認、 音楽の再生、目的地までのナビゲーションなどのサービスを受けることが出来ます。

図 1.1.1.1

PAGE 29 OF 4 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 6: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

1.1.2 特徴 Android Autoに関する公式な発表では、まだ一部しか公開されていませんが、 Googleから発表されている動画や実際にハンズオンしている動画を見ると、 以下のような特徴が見て取れます。 ・Android端末とAndroid Auto搭載の車載機をUSBケーブルでつなぐことで連携を開始します。 ・Android Autoはタッチパネルによる操作のみでなく、音声入力によるハンズフリー操作、  そして対話型の操作が可能です。 Android端末との連携では、以下のような機能が想定されています。  ※現在開発方法が公開されているのは、音楽再生、通知機能のみです。

音声認識 メールや通知に対する返信の作成 別アプリの起動および操作

音声再生 メール・リマインダーやスケジュール通知の読み上げ

音楽再生 スマートフォン内の音楽データの再生

電話機能 スマートフォン内の電話帳から電話 ダイヤル入力による電話

通知機能 通知を選択すると、内容の音声読み上げ 通知に対しての返信

Google Mapによるナビゲーション

PAGE 29 OF 5 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 7: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

2. Android Autoの動作環境

2.1 Android Auto動作環境の構成 現在公開されているAndroid Autoアプリの開発環境は以下のようになっています。

図 2.1.1

以下の表にAndroid Auto動作環境の構成に関しての用語をまとめておきます。

Android Auto API Simulators

車載機側プラットフォームのシュミレータアプリ。 このアプリ上で、Android Autoアプリの動作が確認できる。 現在はオーディオ系とNotification系の2種類が存在する。

Android Auto App Android Auto向けに拡張したAndroidアプリ。

PAGE 29 OF 6 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 8: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

2.2 AndroidのVersionについて Android Autoのアプリを開発する場合、 Android Lollipop(API LEVEL21)以上が必要となります。

2.3 シュミレータアプリのインストール シュミレータアプリはSDK Managerの「Android Auto API Simulators」からダウンロードでき

ます。

ダウンロードが完了すると、以下のapkファイル2個が格納されます。 オーディオ系アプリ向けとメッセージ系アプリ向けに、 2種類のシミュレーションアプリが用意されています。 (Android SDKフォルダ以下)\extras\google\simulators

media­browser­simulator.apk ・・・オーディオ系シミュレーターアプリ messaging­simulator.apk    ・・・メッセージ系シミュレーターアプリ

PAGE 29 OF 7 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 9: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

2.4 シュミレータアプリの起動 それぞれのapkを起動すると、以下の画面が表示されます。

オーディオ系のシミュレーターアプリ

図 2.4.1 media­browser­simulator.apk 起動画面

メッセージ系のシミュレーターアプリ

図2.4.2 messaging­simulator.apk 起動画面

PAGE 29 OF 8 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 10: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3. Android Auto APPについて

3.1 Android Autoでできること Android Autoアプリの開発方法については、以下の2機能が公開されています。(2015/03/13時点)

3.1.1 AndroidAuto音楽再生

1. 車載機上からのスマートフォン内の音楽データの再生 再生、停止、送り、戻るなどの車載機上からの操作をコントロールできます。 シミュレーターアプリと連携する前に聞いていた音楽を、 シミュレーターアプリ上でも再生することが出来ます。

2. スマートフォン内の音楽アプリと同等のプレイリストを取得、閲覧

バックグラウンドに選択されたアプリと同様のプレイリストを取得し、 シミュレーターアプリでも再生する音楽リストを閲覧、選択することが出来ます。

3.1.2 AndroidAutoNotification

1. 車載機器へのNotification送信 車載機器側でNotificationを選択すると、内容を音声で読み上げてくれます。 Notificationを車載機器側(現在はシミュレーターアプリ上)に通知できます。

2. 車載機器からの既読通知を受信

車載機器側でNotificationが選択される(=音声読み上げ)と、 既読になったことをIntent通知で受け取ることができます。

3. 車載機器からの返信を受信 車載機器側でNotificationに対する返信操作が行われると、 その内容をIntent通知で受け取ることができます。

3.2 Android Auto音楽再生アプリ作成手順

3.2.1 アプリケーション概要 本章では再生・曲送り・曲戻しのみ行う音楽再生アプリの作成手順について説明します。

3.2.1.1 通常の音楽再生アプリと違う点 Android Auto用の音楽再生アプリは車載デバイスのためのオーディオサービスを提供します。

 

PAGE 29 OF 9 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 11: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

このサービスによって、車載デバイスはメディアデータの一覧を参照し、カーステレオなどか

ら音楽を再生することができます。

3.2.2 アプリケーション作成手順

3.2.2.1 AndroidManifestの記載 1. 専用リソースファイルのメタデータ定義 AndoridManifestファイルのapplicationタグ内に以下のように定義します。

<meta­data android:name="com.google.android.gms.car.application" android:resource="@xml/automotive_app_desc" />

 

3.2.2.2 専用リソースファイルの定義 専用リソースファイル\res\xml\automotive_app_desc.xmlを用意します。 AndroidManifestファイルで定義した専用リソースファイルautomotive_app_desc.xmlには 以下のように記載します。 音楽を再生するためのクラスを使用する場合は"media"を定義します。

<automotiveapp/> <uses name="media"/> </automotiveapp/>

3.2.2.3 サービスの実装 AndroidManifestファイルで定義したMediaBrowserService継承サービスを実装します。 onGetRoot()とonLoadChildren()の実装が必須です。

3.2.2.4 MediaSessionクラスについて 音楽再生操作を行うため、MediaSessionクラスを使用しています。 MediaSessionクラスは、一連のメディア再生処理を「セッション」とし、 他のクラス(MediaControllerクラス、MediaController.TransportControlsクラスなど) と紐づいて再生操作を一括して管理することができます。 関連クラスを含め、具体的に下記の4のことができます。 1. 再生、一時停止や曲送りなどの再生操作 2. 再生情報の表示 3. 音量変更 4. 再生状態の変更やメディアボタンのイベントをコールバックで取得 なお、再生処理そのものはMediaPlayerクラスなどで行います。

PAGE 29 OF 10 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 12: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.2.2.5 クラス変数とonCreate()の実装 MediaBrowserService継承サービス、AndroidAutoMediaServiceクラスを定義しました。    再生操作にMediaSessionクラス、再生処理にMediaPlayerクラスを使用しています。 他に再生データをリスト管理するmPlayingQueue、 現在の再生インデックスを保持するmCurrentQueueIndexを定義しています。 onCreate()ではMediaSessionクラスの生成およびコールバックの設定などを行っています。

public class AndroidAutoMediaService extends MediaBrowserService implements OnPreparedListener, OnCompletionListener, OnErrorListener private MediaSession mMediaSession; // MediaSessionクラス private MediaPlayer mMediaPlayer; // MediaPlayerクラス private List<MediaSession.QueueItem> mPlayingQueue; // 再生キューリスト private int mCurrentQueueIndex; // 再生キューのインデックス private static final String MEDIA_ID_ROOT = "__ROOT__"; @Override public void onCreate() super.onCreate(); // 再生リストのオブジェクトを作る mPlayingQueue = new ArrayList<MediaSession.QueueItem>(); // MediaSessionを生成 mMediaSession = new MediaSession(this, "MyMediaSession"); setSessionToken(mMediaSession.getSessionToken()); // コールバックを設定 mMediaSession.setCallback(new MyMediaSessionCallback()); // 再生キューの位置を初期化 mCurrentQueueIndex = 0;

3.2.2.6 onGetRoot()とonLoadChildren()の実装 onGetRoot()とonLoadChildren()の実装をします。 onGetRoot()について今回はROOTを固定で返していますが、 引数のclientPackageNameおよびclientUidでクライアントを判断してnullを返すことで、 特定のクライアント以外からの参照を許可しないようにすることもできます。 onLoadChildren()はメディア項目に関する情報を返すメソッドで、 引数のresultにデータを設定します。 MediaItemの種類としてFLAG_PLAYABLEとFLAG_BROWSABLEがあります。 リスト選択によって再生を開始したい場合はFLAG_PLAYABLEを、 リストの表示のみを行いたい場合はFLAG_BROWSABLEを設定してください。 FLAG_PLAYABLE設定時にリスト選択をすると後述のMediaSessionクラスの コールバックメソッドonPlayFromMediaId()がコールされますので、

PAGE 29 OF 11 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 13: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

そのタイミングで再生処理を行います。

@Override public BrowserRoot onGetRoot(String clientPackageName, int clientUid, Bundle rootHints) return new BrowserRoot(MEDIA_ID_ROOT, null); @Override public void onLoadChildren(String parentId, Result <List<MediaItem>> result) List<MediaBrowser.MediaItem> mediaItems = new ArrayList<MediaBrowser.MediaItem>(); // 再生データ情報の設定 MediaDescription.Builder mdb1 = new MediaDescription.Builder(); // 再生データ1 final Bundle mediaBundle1 = new Bundle(); mediaBundle1.putString("Path", "mnt/sdcard/M01.mp3"); // データパス mediaBundle1.putInt("Index", 0); // 曲のインデックス mdb1.setMediaId("MediaID01"); // メディアID mdb1.setTitle("Title01"); // タイトル mdb1.setSubtitle("SubTitle01"); // サブタイトル mdb1.setExtras(mediaBundle1); // 再生データ2 MediaDescription.Builder mdb2 = new MediaDescription.Builder(); final Bundle mediaBundle2 = new Bundle(); mediaBundle2.putString("Path", "mnt/sdcard/M02.mp3"); // データパス mediaBundle2.putInt("Index", 1); // 曲のインデックス mdb2.setMediaId("MediaID02"); // メディアID mdb2.setTitle("Title02"); // タイトル mdb2.setSubtitle("SubTitle02"); // サブタイトル mdb2.setExtras(mediaBundle2); mediaItems.add(new MediaBrowser.MediaItem(mdb1.build(), MediaBrowser.MediaItem.FLAG_PLAYABLE)); mediaItems.add(new MediaBrowser.MediaItem(mdb2.build(), MediaBrowser.MediaItem.FLAG_PLAYABLE)); // sendResult()をコールする前にdetach()のコールが必要 result.detach(); result.sendResult(mediaItems); // 再生キューをセッションに設定 mPlayingQueue.add(new MediaSession.QueueItem(mdb1.build(), 0)); mPlayingQueue.add(new MediaSession.QueueItem(mdb2.build(), 1)); mMediaSession.setQueue(mPlayingQueue);

PAGE 29 OF 12 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 14: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.2.2.7 再生処理の実装 MediaPlayerクラスによる再生処理を行うメソッドを実装します。 基本的なMediaPlayerの実装手順で問題ありません。 再生データのパスはMediaSession.QueueItemで管理させています。

private void playMusic() // プレイヤー生成と準備(生成済みの場合はリセット) if (mMediaPlayer == null) mMediaPlayer = new MediaPlayer(); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnErrorListener(this); else mMediaPlayer.reset(); // 現在のキュー位置を元に再生データのパスを取得する MediaSession.QueueItem queueItem = mPlayingQueue.get(mCurrentQueueIndex); String path = queueItem.getDescription().getExtras().getString("Path"); // MediaPlayerのデータ設定と準備(非同期) try mMediaPlayer.setDataSource(path); mMediaPlayer.prepareAsync(); catch (IllegalArgumentException e) e.printStackTrace(); catch (SecurityException e) e.printStackTrace(); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); @Override public void onPrepared(MediaPlayer mp) // 再生準備完了通知を受け、再生を行う if(mMediaPlayer != null) mMediaPlayer.start();

PAGE 29 OF 13 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 15: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.2.2.8 MediaSessionクラスのコールバック MediaSessionのコールバックを下記のように実装します。 リストを選択するとonPlayFromMediaId()、曲送りを選択するとonSkipToNext()、 曲戻しを選択するとonSkipToPrevious()がコールされます。

図 3.2.2.8.1

図 3.2.2.8.2

PAGE 29 OF 14 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 16: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

private final class MyMediaSessionCallback extends MediaSession.Callback @Override public void onPlay() playMusic(); // リスト選択時にコールされる @Override public void onPlayFromMediaId(String mediaId, Bundle extras) // MediaIDを元に曲のインデックス番号を検索し、設定する。 for(int i = 0; i < mPlayingQueue.size(); i++) MediaSession.QueueItem queueItem = mPlayingQueue.get(i); MediaDescription md = queueItem.getDescription(); if(mediaId.equals(md.getMediaId())) mCurrentQueueIndex = md.getExtras().getInt("Index"); playMusic(); @Override public void onSkipToNext() // 再生キューの位置を次へ mCurrentQueueIndex++; if (mCurrentQueueIndex >= mPlayingQueue.size()) mCurrentQueueIndex = 0; playMusic(); @Override public void onSkipToPrevious() // 再生キューの位置を前へ mCurrentQueueIndex­­; if (mCurrentQueueIndex < 0) mCurrentQueueIndex = 0; playMusic();

PAGE 29 OF 15 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 17: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.2.2.9 onDestory()の実装 終了処理を実装します。

@Override public void onDestroy() super.onDestroy(); // MediaSessionの終了処理 mMediaSession.setCallback(null); mMediaSession.release(); // MediaPlayerの終了処理 if(mMediaPlayer != null) mMediaPlayer.setOnPreparedListener(null); mMediaPlayer.setOnCompletionListener(null); mMediaPlayer.setOnErrorListener(null); mMediaPlayer.release(); mMediaPlayer = null;

3.3 Android Auto Notificationアプリ作成手順

3.3.1 アプリケーション概要 本章では車載機側(カーナビなど)にNotificationを送信し、相互にメッセージ送受信を行えるアプ

リの作成手順について説明します。

3.3.2 アプリケーション作成手順

3.3.2.1 AndroidManifestの記載 以下3点の変更が必要となります。 1. BroadcastRecieverの登録   既読通知と返信通知のIntent通知を受けるために、   BroadcastReceiverを登録します。

<receiver android:name=".MyMessageReadReceiver" > <intent­filter> <action android:name="com.example.androidautonotificationtest.ACTION_MESSAGE_READ" /> </intent­filter> </receiver> <receiver android:name=".MyMessageReplyReceiver" > <intent­filter> <action android:name="com.example.androidautonotificationtest.ACTION_MESSAGE_REPLY" /> </intent­filter> </receiver>

PAGE 29 OF 16 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 18: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

2. 専用リソースファイルのメタデータ定義 AndoridManifestファイルに以下のように定義します。

<receiver android:name=".MyMessageReadReceiver" > <intent­filter> <action android:name="com.example.androidautonotificationtest.ACTION_MESSAGE_READ" /> </intent­filter> </receiver> <receiver android:name=".MyMessageReplyReceiver" > <intent­filter> <action android:name="com.example.androidautonotificationtest.ACTION_MESSAGE_REPLY" /> </intent­filter> </receiver>

3. 専用リソースファイルの定義 以下のディレクトリに専用リソースファイルを用意します。 (プロジェクトフォルダ)\res\xml\automotive_app_desc.xml 又、AndroidManifestファイルで定義した専用リソースファイルには、以下のように記載しま

す。

<automotiveapp> <uses name="notification"/> </automotiveapp>

3.3.2.2 既読通知用のIntent設定 車載機器からNotificationの既読通知を受けるために、PendingIntentを生成します。 ・AndroidManifestファイルでBroadcastReceiverのIntent­filterに登録したアクションを   Intent#setAction()で設定する。 ・Notification管理用の固有IDを、IntentのExtraに設定する。  ※今回は固定値TEST_IDを使用しています。

int TEST_ID = 1; String REPLY_ID = "conversation_id"; String READ_ACTION = "com.example.androidautonotificationtest.ACTION_MESSAGE_READ"; Intent readIntent = new Intent() .addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) .setAction(READ_ACTION) .putExtra(REPLY_ID, TEST_ID); PendingIntent readPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), TEST_ID, readIntent, PendingIntent.FLAG_UPDATE_CURRENT);

PAGE 29 OF 17 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 19: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.3.2.3 返信通知用のIntent設定 車載機器からNotificationの返信通知を受けるために、PendingIntentを生成します。 ・AndroidManifestファイルでBroadcastReceiverのIntent­filterに登録したアクションを、  Intent#setAction()で設定する。 ・Notification管理用の固有IDを、IntentのExtraに設定する。 ・返信内容のStringを受け取るためのキー(EXTRA_VOICE_REPLY)を登録する。

String REPLY_ACTION = "com.example.androidautonotificationtest.ACTION_MESSAGE_REPLY"; String EXTRA_VOICE_REPLY = "extra_voice_reply"; Intent replyIntent = new Intent() .addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) .setAction(REPLY_ACTION) .putExtra(REPLY_ID, TEST_ID); RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY) .setLabel(getApplicationContext().getString(R.string.app_name)) .build(); PendingIntent replyPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), TEST_ID, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT);

3.3.2.4 メッセージオブジェクトの設定 UnreadConversation.Builderオブジェクトを生成します。 ・Notification送信者の設定(TEST_NAME) ・既読通知用/返信通知用Intentの登録 ・Notification本文の登録(TEST_MESSAGE)

String TEST_NAME = "BRIL TARO"; String TEST_MESSAGE = "Hello Android Auto!"; UnreadConversation.Builder unreadConvBuilder = new UnreadConversation.Builder(TEST_NAME) .setReadPendingIntent(readPendingIntent) .setReplyAction(replyPendingIntent, remoteInput); unreadConvBuilder.addMessage(TEST_MESSAGE);

PAGE 29 OF 18 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 20: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.3.2.5 Nortificationオブジェクトの生成と送信 NotificationCompat.Builderクラスを使用して、Notificationオブジェクトを生成、送信します。

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.ic_launcher) .extend(new CarExtender() .setUnreadConversation(unreadConvBuilder.build())); NotificationManagerCompat mNotificationManager = NotificationManagerCompat.from(getApplicationContext()); mNotificationManager.notify(TEST_ID, notificationBuilder.build());

3.3.2.6 既読通知用のBroadcastReciever 既読通知用のBroadcastReceiverでは、 Notification送信時に設定した管理用の固有IDを取得できます。

public class MyMessageReadReceiver extends BroadcastReceiver @Override public void onReceive(Context context, Intent intent) int conversationId = intent.getIntExtra(MainActivity.REPLY_ID, ­1);

3.3.2.7 返信通知用のBroadcastReciever 返信通知用のBroadcastReceiverでは、 Notification送信時に設定した管理用の固有IDと、 車載機器側が設定した返信内容を取得できます。

public class MyMessageReplyReceiver extends BroadcastReceiver @Override public void onReceive(Context context, Intent intent) int conversationId = intent.getIntExtra(MainActivity.REPLY_ID, ­1); CharSequence reply; Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); if (remoteInput != null) reply = remoteInput.getCharSequence(MainActivity.EXTRA_VOICE_REPLY);

PAGE 29 OF 19 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 21: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

3.3.2.8 Nortificationの確認方法 上記処理を全て実装したアプリを作成して、以下の手順を行ってください。 1. メッセージアプリ用のシミュレーターアプリ(messaging­simulator.apk )をインストール 2. テストアプリを起動し、Notificationを送信   ※その後、ステータスバーに表示されるNotificationは開かないでください。 3. シミュレーターアプリを起動 成功すると、以下の画面が表示されます。 メッセージ部分をタップすると、「New message from BRIL TARO,Hello Android Auto」 と音声で読み上げてくれます。

図 3.3.2.8.1

PAGE 29 OF 20 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 22: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

読み終わった後に既読通知のIntentがBroadcast送信され、以下の画面に遷移します。 ここで返信ボタンを押すと、返信通知用のIntentがBroadcast送信されます。 現在のシミュレータアプリ上では返信内容を作成できず、 アプリ側には"This is a reply"の固定文言のみが返ってきますが、 将来的には音声入力などにも対応すると思われます。

図 3.3.2.8.2

PAGE 29 OF 21 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 23: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

4.今後の展望について

4.1アプリケーションについて

4.1.1 Googleが想定しているアプリケーションの構成 Googleが発表している動画で、音楽再生アプリ を例に以下のアプリ構成図にて解説を行なって1

います。 Android Auto アプリケーションの構成に関しての説明をしているもので、2章で記載していたも

のとは構成が異なります。 2

このような構成にすることによって、既存のアプリケーションを1から作り直すことなく、

Android Autoに対応させることが出来るため、将来的にはほとんどのアプリがこのような構成

になるものではないかと予想されます。

図 4.1.1.1

http://developer.android.com/training/auto/audio/index.html のVIDEOリンクより抜粋

1 2015/03/10現在、公開されているAndroid Auto Appの構成は音楽再生アプリのみです。 2 シミュレーターアプリを使用していたため、構成が異なります。

PAGE 29 OF 22 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 24: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

以下の表にAndroid Auto Appを構成に関しての用語をまとめておきます。

My Audio App スマートフォン上で動く MusicPlayer アプリケーション 3

Android Auto App

“Auto enable car”上で車載器用に設計されたUIを表示し、操作を“My Audio App”へ中継するアプリケーション

Auto enable car Android Auto 機能対応車載機。”Android Auto App” を表示する。

上記のように、My Android App(既存の一般的なアプリケーション)をAndroid Auto Appという

中継アプリとの連携させることで、Auto enabled car(車載機)上からMy Android Appを操作する

ことが可能になるという構成になっています。 つまり、Android Auto App自体はただのコントローラーであり、実際に処理が行われているの

はスマートフォン上にあるMy Audio Appであるという仕組みです。

3 MusicPlayerアプリに限らず、一般なスマートフォンアプリ全般。 PAGE 29 OF 23

©2015 BRILLIANTSERVICE CO.,LTD.

Page 25: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

4.1.2 想定されるアプリケーションの使用例 上記のような構成から将来的には、 以下のような使用方法が出来るのではないかと予想されます。 ※例として、既存のスケジュール管理や音声で別アプリを起動出来るアプリがAndroid Autoに拡張されたとします。

1. 乗車前:スマートフォン内のアプリにスケジュールなどを登録しておく 2. 車載器とスマートフォンを接続 3. 乗車後 1:車載器から、スケジュールの通知がされる。 4. 乗車後 2:続けて車載マイクからに向けて、入力を行う。

 例) メールの作成、別アプリ起動、SNS投稿 イメージは以下の通りです。

図 4.1.2.1

乗車前:スマートフォン内のアプリにスケジュールなどを登録しておく

PAGE 29 OF 24 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 26: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

図 4.1.2.2 車載器とスマートフォンを接続

図 4.1.2.3 乗車後 1:車載器から、スケジュールの通知がされる

PAGE 29 OF 25 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 27: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

図 4.1.2.4 乗車後 2:続けて車載マイクから、入力を行う 1

                

図 4.1.2.5 乗車後 2:続けて車載マイクから、入力を行う 2

PAGE 29 OF 26 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 28: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

4.2 懸念点 Android Autoに関して、以下のような懸念点があります。(2015/03/13時点)

Android Auto(車載器側)が非公開であること Android Auto搭載ナビがまだ発売されておらず 、 4

APIおよびプラットフォームに関する情報が非公開になっています。 ナビOS上にAndroid AutoのVMまたはアプリケーションが起動されるのか、 どのようにアプリケーションが起動され、制御されるか不明な状態です。

Android Autoのすべての機能が公開されていないこと 現在、公式PV等などではGoogle Mapや音声認識等がデモで行われていますが、 音楽再生機能とメッセージ通知機能のみが一般的に公開されています。 Googleの狙いとしては、既存のアプリケーションやサービスを多少の変更のみで

Android Auto Appとして拡張出来ることをコンセプトとしているようですが、その実現

方法などは未だに非公開です。

アプリ審査・公開の問題 UIなどの観点からすべてのアプリが公開されるのは難しいと予想されます。 Android Auto Appは安全審査を行う とありますが、 5

運転中に使用しても問題ないUIの設計を遵守されているか、 運転を阻害する機能が備わっていないか等の、 アプリケーション機能のすべてを網羅出来るか。 又、Googleの審査を通ったとしても、 日本の基準に公開されたアプリケーションが適しているかなどの問題点もあります。 6

命に関わる問題なので、とても容易ではない事が予想出来ます。

4 パイオニア株式会社の連結子会社であるPioneer Electronics (USA) Inc.から3月に北米、西欧で

発売予定(日本国内での販売は今のところ無し) 5 Auto App Qualityの「Frequently Asked Questions」項を参照 6 現に、Android Auto公式ページでも、「運転中に便利な機能」には「音楽(日本国内対応未定)」と記載されています。

PAGE 29 OF 27 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 29: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

株式会社ブリリアントサービス

(50音順) 大阪開発部 開発課 今西杏丞 大阪開発部 開発課 角野宏樹 大阪開発部 開発課 志村直彦 大阪開発部 開発課 中野大輔 530-0047

大阪市北区西天満二丁目6番8号 堂島ビルヂング8階

TEL:06-6363-5735 FAX:06-6363-5736

https://www.brilliantservice.co.jp/contact/

PAGE 29 OF 28 ©2015 BRILLIANTSERVICE CO.,LTD.

Page 30: Android Autoについて - 株式会社ブリリアントサービ …. はじめに 本書はAndroid Autoに関する概要をまとめた資料です。 以下本書を記載するにあたって、以下のURLを参考にしております。

免責事項 本資料に掲載された情報は、より多くの方々にAndroid Autoを知っていただき、技術に触れ、

役立てて頂くことを目的としたものです。 本資料に掲載された情報の利用にあたっては各自の判断に基づき行うものとし、それによって

生じた一切の損害について弊社および情報提供者は一切の責任を負いません。

PAGE 29 OF 29 ©2015 BRILLIANTSERVICE CO.,LTD.