2012-03-22 72 views
0

我正在研究android.speech程序包的工作原理,我发现语音识别器忽略了与意图RecognizerIntent.ACTION_WEB_SEARCH一起使用的大多数附加信息。ACTION_WEB_SEARCH识别器识别器的可用选项

  • 如果我使用RecognizerIntent.EXTRA_LANGUAGE extra设置语言,则指定的语言将被忽略,但始终使用设备的默认语言。
  • 如果我使用RecognizerIntent.EXTRA_PROMPT设置文本,则不显示此文本。
  • 如果我使用startActivityForResult方法开始语音识别的活性,则语音识别器调用onActivityResult,但第二个参数(resultCode)总是RESULT_CANCELED,第三个参数(数据Intent)总是null。这种行为可能是由于这种意图类型的目的是在网上执行搜索。出于同样的原因,如果我使用RecognizerIntent.EXTRA_MAX_RESULTS来设置最大结果数,则将忽略指定的值。

我发现此行为,但official documentation表示这些选项也可以用于ACTION_WEB_SEARCH意图。

为什么语音识别系统的实际行为与官方文档中陈述的不同?

回答

1

我认为你正在使用错误的操作。而不是ACTION_WEB_SEARCH,请使用ACTION_RECOGNIZE_SPEECH

如果这样做,onActivityResult将按照您的预期行事,您的活动将控制对识别结果的解释。

顺便说一句,当您设置ACTION_WEB_SEARCH时,您将处理结果委托给Android。根据用户的说法,Android可能会启动一个Web浏览器,或者它可能会启动一封电子邮件(如果用户说“电子邮件”)。因此,您的活动没有收到任何有用的信息是有道理的,但我认为它应该考虑到RecognizerIntent.EXTRA_LANGUAGE。

+0

那么,我已经使用了'ACTION_RECOGNIZE_SPEECH',并且验证了所有附加工作。但我不明白为什么一些额外功能不适用于'ACTION_WEB_SEARCH':可能这种行为的原因是这种意图不会将结果返回给调用活动。 我很惊讶'EXTRA_LANGUAGE'额外不起作用:如果我设置了另一种语言而不是默认语言,“现在讲话”对话框显示指定的语言,但不能识别说出的单词。相反,“EXTRA_LANGUAGE”额外的工作使用了“ACTION_RECOGNIZE_SPEECH”意图。 – enzom83 2012-03-23 12:26:04

+0

我同意相同的语言字符串应该适用于这两种意图 – gregm 2012-03-23 13:13:45