在我的searchable.xml中,我有:
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
我得到的搜索字符串返回SearchManager就像这样:
if (Intent.ACTION_SEARCH.equals(action)) {
searchString = intent.getStringExtra(SearchManager.QUERY);
}
有没有办法从搜索字符串是来自键盘,还是语音搜索和语音识别器的结果?
我知道我可以把实体放在:
<actionkey android:keycode="KEYCODE_SEARCH" android:queryActionMsg="search"/> <actionkey android:keycode="KEYCODE_ENTER" android:queryActionMsg="enter"/>
在我的searchable.xml文件中,然后使用intent.getIntExtra(SearchManager.ACTION_KEY,-999)查看搜索是否已启动,因为用户点击了键盘上的 Enter 键,或者硬件搜索按钮,但我看不到如何通过“麦克风”图标按钮或搜索栏中的“搜索”图标按钮检测到搜索是否已启动。
(在语音搜索的情况下,我需要在进行进一步的网络查找时将文本回显给用户。对于文本搜索,回显用户输入的内容是多余的。)
我怎么能区分呢?
答案 0 :(得分:1)
回答我自己的问题:如果我只输入一个查询,QUERY和USER_QUERY都会返回键入的文本。如果我说出来,则USER_QUERY为空。
答案 1 :(得分:0)
我猜测语音输入只是一个输入法编辑器(IME),你无法获得有关IME用于输入文本的任何信息。