尝试通过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) ;
}
答案 0 :(得分:0)
如果结果不是RESULT_OK
是因为某种原因意图不顺利。您的应用程序清单中是否有互联网连接和相应的权限?
如果没有,请尝试添加它们。
顺便说一句,如果你没有得到RESULT_OK
,你得到resultCode
的价值是多少?
@@@@@@@@ EDIT @@@@@@@@
现在我完全理解你的问题。
问题如下,你使用动作RecognizerIntent.ACTION_WEB_SEARCH
启动Intent,并且根据reference,它永远不会返回结果。它只在显示“立即说出”对话框时调用onActivityResult
,它不可能返回语音识别的任何结果。
尽管如此,它会触发相应的操作。但我同意你的看法,这种行为不是文档中描述的行为。
对不起,我只能说它看起来像API的实现错误。