如何从Google的“语音操作”获得语音识别结果?

时间:2011-10-17 14:55:40

标签: android speech-recognition

尝试通过RecognizerIntent.ACTION_WEB_SEARCH在我的应用中使用Google的“语音操作”。根据文档,我应该能够通过RecognizerIntent.EXTRA_RESULTS获得语音识别结果。在onActivityResult()之后立即调用以下代码中的startActivityForResult(),结果还不行。有人可以帮忙吗?谢谢!

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

1 个答案:

答案 0 :(得分:0)

如果结果不是RESULT_OK是因为某种原因意图不顺利。您的应用程序清单中是否有互联网连接和相应的权限?

如果没有,请尝试添加它们。

顺便说一句,如果你没有得到RESULT_OK,你得到resultCode的价值是多少?

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

现在我完全理解你的问题。

问题如下,你使用动作RecognizerIntent.ACTION_WEB_SEARCH启动Intent,并且根据reference,它永远不会返回结果。它只在显示“立即说出”对话框时调用onActivityResult,它不可能返回语音识别的任何结果。

尽管如此,它会触发相应的操作。但我同意你的看法,这种行为不是文档中描述的行为。

对不起,我只能说它看起来像API的实现错误。