我正在研究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/

10-10 09:26