【问题标题】:How can I tell if the search string returned from SearchManager is a result of a VoiceSearch?如何判断从 SearchManager 返回的搜索字符串是否是 VoiceSearch 的结果?
【发布时间】:2010-01-27 07:35:27
【问题描述】:

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

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

我如何区分?

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      相关资源
      最近更新 更多