2011-10-17 10 views
3

RecognizerIntent.ACTION_WEB_SEARCHでGoogleの「音声操作」をアプリで使用しようとしています。ドキュメントによると、私はRecognizerIntent.EXTRA_RESULTSで音声認識の結果を得ることができるはずです。以下のコード中のは、startActivityForResult()の直後に呼び出され、その結果はまだOKではありません。誰も助けることができますか?ありがとう!Googleの「音声行動」から音声認識結果を取得するにはどうすればよいですか?

int VOICE_ACTIONS_CODE = 1234 ; 
Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH) ; 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM) ; 
startActivityForResult(intent, VOICE_ACTIONS_CODE) ; 

. . . 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == VOICE_ACTIONS_CODE) { 
     if(resultCode == RESULT_OK) { 
      ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) ; 
      // The following should print speech recog. results 
      Log.w("Results from Voice Actions:", result.get(0)) ; 
     } 
    } 
    super.onActivityResult(requestCode, resultCode, data) ; 
} 
+0

本当にやりたいことを尋ねることなく答えました.WEB_SEARCHモードは非常に特殊な機能です。認識の結果でウェブ検索を実行しますか? – mdelolmo

+0

@mdelolmoはい、それは 'RecognizerIntent.ACTION_WEB_SEARCH'の1つの機能です。詳しくは、[音声操作](http://www.google.com/mobile/voice-actions/)をご覧ください。そして、「行動」を開始することに加えて、私はまた、その行動に結びつく音声認識結果を知りたい。 – Dusan

答えて

0

結果がRESULT_OKでない場合は、何らかの理由で意図がうまくいかなかったためです。インターネット接続と、アプリケーションマニフェストに対応する権限がありますか?

そうでない場合は、追加してください。

Btw、RESULT_OKを取得しないと、resultCodeの値はいくらですか?

@@@@@@@@ EDIT @@@@@@@@

今、私は完全にあなたの質問を理解しています。

問題は次のとおりです。アクションRecognizerIntent.ACTION_WEB_SEARCHでインテントを起動し、referenceに従って、結果を返すことはありません。 「今すぐ話す」ダイアログが表示されたときにちょうどonActivityResultが呼び出されますが、音声認識の結果は返されません。

それにもかかわらず、対応するアクションがトリガされます。しかし、私はあなたに同意します、その行動はドキュメントに記載されているものではありません。

申し訳ありませんが、APIの実装上の不具合のように見えます。

+0

意図は期待どおりですが、 'onActivityResult()'が呼び出されると、意図はまだ終了していません。その時点で、 'resultCode'は「0」または「RESULT_CANCELED」に等しくなります。 Btwは 'RecognizerIntent.ACTION_RECOGNIZE_SPEECH'で起動するときに' onActivityResult() 'で音声認識結果を取得できるので、アプリケーションマニフェストファイルに問題はありません。 – Dusan

+0

@Dusan 'ActivityNotFoundException'をトリガーしますか? logcat – mdelolmo

+0

を確認してください。ただし、次の警告があります。_ActivityManager(142):アクティビティが新しいタスクとして起動しているため、結果がキャンセルされました。 – Dusan