こんにちは、KID.Aです。
前回の記事でVoice Interaction APIを説明しました。
今回は音声会話で要求できるリクエストについて記載します。
音声会話を構成するリクエストは全部で5種類あります。(API Level23現在)
・ConfirmationRequest、
・CompleteVoiceRequest
・PickOptionRequest
・AbortVoiceRequest
・CommandRequest
上記のAPIについて実装方法と実行結果の説明をしていきます。
ConfirmationRequest
ConfirmationRequestを呼ぶとPromptに設定したワードが読まれます。
ユーザはokayなどの音声を発呼すると、onConfirmationResultがコールバックされます。
開発サイトのAPI
http://developer.android.com/intl/ja/reference/android/app/VoiceInteractor.ConfirmationRequest.html
・実装
private void startConfirmationRequest() { VoiceInteractor.Prompt prompt = new VoiceInteractor.Prompt(“confirm"); getVoiceInteractor().submitRequest(new VoiceInteractor.ConfirmationRequest(prompt, null) { @Override public void onConfirmationResult(boolean confirmed, Bundle result) { } }); }
・実行時
「confirm」といわれます。
「okay」と発呼します。
(okay以外のワードだともう一度、「confirm」といわれます)
onConfirmationResultがコールバックされます。
CompleteVoiceRequest
音声のやりとりが完了した場合に送るリクエストです。
アプリケーションは非音声のやりとりを行う場合は、Intent.FLAG_ACTIVITY_NEW_TASKを使用して新たにActivityを起動してください。
開発サイトのAPI
http://developer.android.com/intl/ja/reference/android/app/VoiceInteractor.CompleteVoiceRequest.html
・実装
private void startCompleteVoiceRequest() { VoiceInteractor.Prompt prompt = new VoiceInteractor.Prompt("complete"); getVoiceInteractor().submitRequest(new VoiceInteractor.CompleteVoiceRequest(prompt, null){ @Override public void onCompleteResult(Bundle result) { //Intent.FLAG_ACTIVITY_NEW_TASKでActivityを起動する。 } }); }
・実行時
「complete」といわれます。
onCompleteResultがコールバックされます。
PickOptionRequest
PickOptionRequestはオプションリスト(PickupRequest.Option)でリストを作り、
リストに含まれているキーワードが発呼されたらonPickOptionResultにコールバックされます。
もしリストに含まれていないキーワードが発呼されたらPromptに設定した文字が読まれます。
開発サイトのAPI
http://developer.android.com/intl/ja/reference/android/app/VoiceInteractor.PickOptionRequest.html
・実装
private void startPickOptionRequest() { PickOptionRequest.Option[] options = new PickOptionRequest.Option[]{ new PickOptionRequest.Option("dog", 0), new PickOptionRequest.Option("cat", 1) }; getVoiceInteractor().submitRequest( new VoiceInteractor.PickOptionRequest(new VoiceInteractor.Prompt(“select pet"), options, new Bundle()) { @Override public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) { } } ); }
・実行時
「select pet」といわれます。
「duck」と発呼します。
※リストに含まれないワードを発呼した場合をみてます。
「select pet」といわれます。
「dog」と発呼します。
onPickOptionResultがコールバックされます。
AbortVoiceRequest
開発サイトのAPI
http://developer.android.com/intl/ja/reference/android/app/VoiceInteractor.AbortVoiceRequest.html
現在の音声のやりとりが完了できないことをレポートします。
アプリケーションは非音声のやりとりを行う場合は、Intent.FLAG_ACTIVITY_NEW_TASKを使用して新たにActivityを起動してください。
・実装
private void startAbortVoiceRequest() { VoiceInteractor.Prompt prompt = new VoiceInteractor.Prompt(“abort"); getVoiceInteractor().submitRequest(new VoiceInteractor.AbortVoiceRequest(prompt, null){ @Override public void onAbortResult(Bundle result) { //Intent.FLAG_ACTIVITY_NEW_TASKでActivityを起動する。 } }); }
・実行時
「abort」といわれます。
onAbortResultがコールバックされます。
CommandRequest
VoiceInteractionServiceを使用して、ベンダー定義のコマンドを実行します。
開発サイトのAPI
http://developer.android.com/intl/ja/reference/android/app/VoiceInteractor.CommandRequest.html
・実装
private void startCommandRequest() { getVoiceInteractor().submitRequest(new VoiceInteractor.CommandRequest(“sleep 3", null){ @Override public void onCommandResult(boolean isCompleted, Bundle result) { } }); }
・実行時
実行時はベンダー定義のコマンドがわからないため、上記のソースを実行しても何も起こりません。
以上がリクエスト一覧になります。