連載
» 2014年10月17日 18時00分 公開

Androidで動く携帯Javaアプリ作成入門(55):Android 5.0発表&スマホと連動する音声認識Android Wearアプリの作り方 (2/4)

[緒方聡,株式会社イーフロー]

「OK Google」が必須! Android Wear上で動作するアプリのボイスアクション

 Android Wearには、システムとして用意されている「ボイスアクション」が備わっています。Android Wearは、常にマイクがONになっていて、「OK Google」というフレーズでボイスアクションの入力画面「Cue Card」に遷移します。

図10 ボイスアクション入力画面

 この画面で以下のフレーズを話すと、関連付けられたアプリが起動します。起動時にボイスアクションからパラメーターを渡すこともできてしまいます。

 以下は、システムで用意されているボイスアクション一覧です。

名前 フレーズ(日本語) フレーズ(英語) Intent
タクシーを呼ぶ OK Google、タクシーを呼ぶ "OK Google, get me a taxi"
"OK Google, call me a car"
・Action
com.google.android.gms.actions.RESERVE_TAXI_RESERVATION
メモを入力 OK Google、メモを入力 "OK Google, take a note"
"OK Google, note to self"
・Action
android.intent.action.SEND
・Category
com.google.android.voicesearch.SELF_NOTE
・Extras
android.content.Intent.EXTRA_TEXT - メモの文字列を含む
アラーム設定 OK Google、アラーム設定 午前8時 "OK Google, set an alarm for 8 AM"
"OK Google, wake me up at 6 tomorrow"
・Action
android.intent.action.SET_ALARM
・Extras
android.provider.AlarmClock.EXTRA_HOUR(アラーム時刻(時)の整数を含む)
android.provider.AlarmClock.EXTRA_MINUTES - アラーム時刻(分)の整数を含む
(上記二つのエクストラはオプション)
タイマー設定 OK Google、タイマー設定 10分 "Ok Google, set a timer for 10 minutes" ・Action
android.intent.action.SET_TIMER
・Extras
android.provider.AlarmClock.EXTRA_LENGTH(タイマーを表す1から86400の間(24時間を表す秒数)の整数)
サイクリング開始/終了 (不明) "OK Google, start cycling"
"OK Google, start my bike ride"
"OK Google, stop cycling"
・Action
vnd.google.fitness.TRACK
・MimeType
vnd.google.fitness.activity/biking
・Extras
actionStatus(開始時のActiveActionStatusと終了時のCompletedActionStatusの値を含む文字列)
ランニング開始/終了 (不明) "OK Google, track my run"
"OK Google, start running"
"OK Google, stop running"
・Action
vnd.google.fitness.TRACK
・MimeType
vnd.google.fitness.activity/running
・Extras
actionStatus(開始時のActiveActionStatusと終了時のCompletedActionStatusの値を含む文字列)
トレーニング開始/終了 (不明) "OK Google, start a workout"
"OK Google, track my workout"
"OK Google, stop workout"
・Action
vnd.google.fitness.TRACK
・MimeType
vnd.google.fitness.activity/other
・Extra
sactionStatus(開始時のActiveActionStatusと終了時のCompletedActionStatusの値を含む文字列)
心拍計表示 (不明) "OK Google, what’s my heart rate?"
"OK Google, what’s my bpm?"
・Action
vnd.google.fitness.VIEW
・MimeType
vnd.google.fitness.data_type
または、com.google.heart_rate.bpm
歩数計表示 (不明) "OK Google, how many steps have I taken?"
"OK Google, what’s my step count?"
・Action
vnd.google.fitness.VIEW
・Mime Type
vnd.google.fitness.data_type
または、com.google.step_count.cumulative

 公式ドキュメントには英語のボイスアクションフレーズしか記載されていませんが、表示言語が日本語だと英語のボイスアクションフレーズは受け付けません。代わりに日本語のボイスアクションフレーズを話す必要がありますが、日本語を含め、各国語のボイスアクションフレーズのドキュメントはまだ公開されていないようです。

 上記表の日本語フレーズは、筆者がAndroid Wearの日本語表示などから類推した動作確認済みのものですが、バージョンや機種によっては動作しない可能性があることをご了承ください。

「タクシーを呼ぶ」というボイスアクションに対応するサンプルアプリ

 前述の通り、今回作成するサンプルは、「タクシーを呼ぶ」というボイスアクションに対応するアプリです。

 ボイスアクションで「タクシーを呼ぶ」という特徴的なフレーズが用意されています。このアクションにデフォルトで割り当てられたアプリはありません。また、Google Play Storeにも、原稿執筆時点で対応するアプリは存在していません。

 「タクシーを呼ぶ」という、国はおろか地域をも限定してしまう処理が要求されるこのボイスアクションに対応するアプリは、大規模にはなりませんが開発のハードルは高いです。従って、サンプルとして動作確認するにはうってつけと考えました。

 以上が「タクシー呼ぶ」アプリをサンプルとして選定した理由です。サンプルは以下よりダウンロード可能です。

まずは、ひな型のAndroidManifest.xmlを修正

 今回の「タクシーを呼ぶ」サンプルアプリは、前回のAndroid Studioで作成したひな型プロジェクトに追加・修正していく形で作成します。

 AndroidManifest.xmlには、以下のようにintent-filterを追記します。

<intent-filter>
    <action android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" />
 
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

 「タクシーを呼ぶ」ボイスアクションに対応したアクションをAndroidManifest.xmlに記載することで、「タクシーを呼ぶ」というボイスアクションに対応したアプリとして認識され、スマートフォン側のAndroidアプリにも表示されるようになります 。

図11 スマホ側のAndroidアプリにも反映される

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。