如何判断SearchManager返回的搜索字符串是否是VoiceSearch的结果?

时间:2010-01-26 00:59:51

标签: android

在我的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 键,或者硬件搜索按钮,但我看不到如何通过“麦克风”图标按钮或搜索栏中的“搜索”图标按钮检测到搜索是否已启动。

(在语音搜索的情况下,我需要在进行进一步的网络查找时将文本回显给用户。对于文本搜索,回显用户输入的内容是多余的。)

我怎么能区分呢?

2 个答案:

答案 0 :(得分:1)

回答我自己的问题:如果我只输入一个查询,QUERY和USER_QUERY都会返回键入的文本。如果我说出来,则USER_QUERY为空。

答案 1 :(得分:0)

我猜测语音输入只是一个输入法编辑器(IME),你无法获得有关IME用于输入文本的任何信息。