android - 如何从谷歌的 "Voice Actions"获取语音识别结果?

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

最佳答案

如果结果不是 RESULT_OK 是因为出于某种原因 Intent 没有顺利进行。您的应用程序 list 中是否有互联网连接和相应的权限?

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

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

@@@@@@@@编辑@@@@@@@@

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

问题如下,根据 reference,您使用 RecognizerIntent.ACTION_WEB_SEARCH 操作启动 Intent,但它从不返回结果。 , 它应该。它在显示“Speak Now”对话框时调用onActivityResult,不可能返回任何语音识别结果。

然而,它会触发相应的 Action 。但我同意你的看法,这种行为与文档中描述的不一样。

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

关于android - 如何从谷歌的 "Voice Actions"获取语音识别结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795599/

相关文章:

java - 使用 SDK 12 和兼容性库的 Eclipse 导出签名 APK 失败

java - android.view.WindowManager$BadTokenException : Unable to add window -- token android. os.BinderProxy@739b5ae 无效

Android - 离线语音识别

iphone - 仅当强度达到一定分贝时才从语音输入中识别短语 [iOS]

android - 如何等待 2 个并行改造调用都完成?

java - 客户端无法使用自签名证书连接到 REST API

java - 语音转文本,java语音API,哪里可以找到?

android - 官方支持 android.speech.extra.DICTATION_MODE 吗?

macos - 通过 Homebrew 软件安装 PortAudio 时出错。 (苹果)

android - 查找文本输入框和按钮字段的资源名称以响应 native android 应用程序