我正在研究android.speech
包的工作原理,我注意到语音识别器会忽略与意图RecognizerIntent.ACTION_WEB_SEARCH
一起使用的大部分内容。
RecognizerIntent.EXTRA_LANGUAGE
extra设置语言,则会忽略指定的语言,但始终使用设备的默认语言。RecognizerIntent.EXTRA_PROMPT
设置文字,则不会显示此文字。startActivityForResult
方法启动语音识别活动,则语音识别器会调用onActivityResult
,但第二个参数(resultCode
)始终为RESULT_CANCELED
且第三个参数(数据Intent
)始终为null
。此行为可能是由于此类意图的目的是在Web上执行搜索。出于同样的原因,如果我使用RecognizerIntent.EXTRA_MAX_RESULTS
设置最大结果数,则忽略指定的值。我发现了这种行为,但official documentation表示这些选项也可以用于ACTION_WEB_SEARCH
意图。
为什么语音识别系统的实际行为与官方文档中的内容不同?
答案 0 :(得分:1)
我认为你正在使用错误的行动。而不是ACTION_WEB_SEARCH
,请使用ACTION_RECOGNIZE_SPEECH
。
如果您这样做,onActivityResult
将按预期行事,您的活动将控制解释识别结果。
顺便说一句,当您设置ACTION_WEB_SEARCH时,您将结果的处理委派给Android。根据用户的说法,Android可能会启动网络浏览器,也可能会启动电子邮件(如果用户说“电子邮件”)。因此,有意义的是,您的活动没有收到任何有用的信息,尽管我认为它仍然应该考虑到RecognizerIntent.EXTRA_LANGUAGE。