我正在研究android.speech
包是如何工作的,我注意到大多数用于意图RecognizerIntent.ACTION_WEB_SEARCH
的附加程序都被语音识别器忽略了。
RecognizerIntent.EXTRA_LANGUAGE
设置语言,则会忽略指定的语言,但总是使用设备的默认语言。RecognizerIntent.EXTRA_PROMPT
设置文本,则不会显示此文本。startActivityForResult
方法启动语音识别活动,那么语音识别器将调用onActivityResult
,但是第二个参数( resultCode
)总是RESULT_CANCELED
,第三个参数(数据Intent
)总是null
。这种行为可能是由于这样一个事实:这种意图的目的是在网络上执行搜索。出于同样的原因,如果我使用RecognizerIntent.EXTRA_MAX_RESULTS
设置结果的最大数量,则指定的值将被忽略。我发现了这种行为,但是正式文件说这些选项也可以用于ACTION_WEB_SEARCH
意图。
为什么语音识别系统的实际行为与官方文件中所述不同?
发布于 2012-03-22 22:59:31
我觉得你用错了动作。不要使用ACTION_WEB_SEARCH
,而是使用ACTION_RECOGNIZE_SPEECH
。
如果您这样做了,onActivityResult
将按照您的预期行事,并且您的活动将控制对识别结果的解释。
顺便说一句,当您设置ACTION_WEB_SEARCH时,您将结果的处理委托给Android。根据用户的说法,Android可能启动web浏览器,也可能启动电子邮件(如果用户说“电子邮件”)。因此,您的活动没有收到任何有用的信息是有意义的,尽管我认为它仍然应该考虑到RecognizerIntent.EXTRA_LANGUAGE。
https://stackoverflow.com/questions/9824586
复制相似问题