我正在研究android.speech
程序包的工作方式,我注意到语音识别器会忽略与意图RecognizerIntent.ACTION_WEB_SEARCH
一起使用的大多数附加功能。
如果我使用RecognizerIntent.EXTRA_LANGUAGE
附加语言设置语言,则将忽略指定的语言,但始终使用设备的默认语言。
如果使用RecognizerIntent.EXTRA_PROMPT
设置文本,则不会显示该文本。
如果我使用startActivityForResult
方法启动语音识别活动,则语音识别器将调用onActivityResult
,但是第二个参数(resultCode
)始终为RESULT_CANCELED
,第三个参数(数据Intent
)始终为null
。此行为可能是由于这种意图的目的是要在Web上执行搜索这一事实。出于同样的原因,如果我使用RecognizerIntent.EXTRA_MAX_RESULTS
设置最大结果数,则将忽略指定的值。
我发现了这种现象,但是official documentation说这些选项也可以用于ACTION_WEB_SEARCH
意图。
为什么语音识别系统的实际行为与官方文档中说明的有所不同?
最佳答案
我认为您使用了错误的操作。代替ACTION_WEB_SEARCH
,使用ACTION_RECOGNIZE_SPEECH
。
如果这样做,onActivityResult
将按照预期的方式运行,并且“活动”将控制解释识别结果。
顺便说一句,当您设置ACTION_WEB_SEARCH时,会将结果处理委托给Android。根据用户说的话,Android可能会启动网络浏览器,也可能会启动电子邮件(如果用户说“电子邮件”)。因此,您的活动没有收到任何有用的信息是有道理的,尽管我认为仍应考虑RecognizerIntent.EXTRA_LANGUAGE。
关于android - ACTION_WEB_SEARCH RecognizerIntent的可用选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9824586/