Android 如何从Google获得语音识别结果';s";声音动作;?

Android 如何从Google获得语音识别结果';s";声音动作;?,android,speech-recognition,Android,Speech Recognition,试图通过RecognizerIntent.ACTION\u WEB\u SEARCH在我的应用程序中使用谷歌的“语音操作”。根据文档,我应该能够通过RecognizerIntent.EXTRA_results获得语音识别结果。下面代码中的onActivityResult()似乎是在startActivityForResult()之后立即调用的,结果还不确定。有人能帮忙吗?谢谢 int VOICE_ACTIONS_CODE = 1234 ; Intent intent = new Intent(R

试图通过
RecognizerIntent.ACTION\u WEB\u SEARCH
在我的应用程序中使用谷歌的“语音操作”。根据文档,我应该能够通过
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) ;
}
int VOICE\u ACTIONS\u code=1234;
意向意向=新意向(识别意向.行动\网络\搜索);
intent.putExtra(RecognizerIntent.EXTRA语言模型,RecognizerIntent.LANGUAGE模型自由形式);
startActivityForResult(意图、声音、行动、代码);
. . .
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(请求代码==语音动作代码){
if(resultCode==RESULT\u OK){
ArrayList结果=data.getStringArrayListExtra(RecognizerIntent.EXTRA_结果);
//以下应打印语音记录结果
Log.w(“来自语音操作的结果:,result.get(0));
}
}
super.onActivityResult(请求代码、结果代码、数据);
}

如果结果不是
result\u OK
是因为出于某种原因,意图不顺利。您的应用程序清单中是否有internet连接和相应的权限

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

顺便说一句,如果你没有得到
RESULT\u OK
,你得到的
resultCode
值是多少

@@@@@@@@编辑@

现在我完全理解你的问题

问题如下,您使用action
RecognitizerIntent.action\u WEB\u SEARCH
启动Intent,但根据,它不会返回结果。它调用onActivityResult的
就在显示“立即讲话”对话框时,它不可能返回任何语音识别结果

然而,它触发了相应的动作。但我同意你的看法,这种行为与文件中描述的不同


很抱歉,我只能说这看起来像是API的实现错误。

意图与预期一致,但当调用
onActivityResult()
时,意图尚未完成。此时,
resultCode
等于“0”或
RESULT\u取消
。顺便说一句,当使用
RecognizerIntent.ACTION\u recognizer\u SPEECH
启动时,我能够在activityresult()中获得语音识别结果,因此应用程序清单文件应该没有问题。@Dusan是否触发了任何
活动NotFoundException
?检查日志编号。但是有以下警告:ActivityManager(142):Activity作为一个新任务启动,因此取消Activity result。@Dusan,我已经测试了同样的结果,它确实返回
结果\u Cancelled
,但您告诉我您可以得到语音识别结果,我也是。在我的例子中,也会显示带有结果的可能操作的提示。因此,可能不应该返回任何结果,因此,根据公式,它将返回0。那么,有实际问题吗?启动
RecognizerIntent.ACTION\u WEB\u SEARCH
intent时,我无法在
onActivityResult()
中获得语音识别结果。你能做到吗?根据,我应该能够从
EXTRA\u results
中获得这些结果。我回答时没有问你真正想做什么,因为WEB\u搜索模式是针对一个非常特定的功能。是否要使用识别结果执行web搜索?@mdelolmo是的,但这只是
RecognizerIntent.ACTION\u web\u search
的一项功能。更多信息,请参阅。除了启动“行动”,我还想知道该行动产生的语音识别结果。