[Android 6.0] Voice Interaction APIのリクエストについて

こんにちは、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」といわれます。
confirm1

「okay」と発呼します。
(okay以外のワードだともう一度、「confirm」といわれます)

onConfirmationResultがコールバックされます。
wait

 

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」といわれます。
comp2
onCompleteResultがコールバックされます。
wait

 

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」といわれます。
selectpet1

「duck」と発呼します。
※リストに含まれないワードを発呼した場合をみてます。
duck1

「select pet」といわれます。
selectpet2

「dog」と発呼します。
dog1

onPickOptionResultがコールバックされます。
wait

 

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」といわれます。
abort1

onAbortResultがコールバックされます。
wait

 

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) {
        }
    });
}

・実行時
実行時はベンダー定義のコマンドがわからないため、上記のソースを実行しても何も起こりません。

 

以上がリクエスト一覧になります。

 

 

KID.A

KID.A の紹介

楽して生きることと一発逆転を夢見ている、ちゃきちゃきのAndroiderです。
いろいろアプリを出しているのですが、いつもリリース後にターゲットユーザ数を2桁見誤っていたことに気付くので、残念でなりません。下方修正で、ヒットがでません。おしいです。

明日から本気出します。
よろしくお願いします。

カテゴリー: Android タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です