代码之家  ›  专栏  ›  技术社区  ›  DavidPhillipOster

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

  •  0
  • DavidPhillipOster  · 技术社区  · 15 年前

    在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)查看搜索是否因为用户点击 进入 键盘或硬件上的键 搜索 按钮,但我不知道如何检测搜索是从“麦克风”图标按钮或搜索栏中的“搜索”图标按钮开始的。

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

    我该怎么区分呢?

    2 回复  |  直到 15 年前
        1
  •  1
  •   DavidPhillipOster    15 年前

    回答我自己的问题:如果我只是键入一个查询,查询和用户查询都会返回键入的文本。如果我说,用户查询为空。

        2
  •  0
  •   Mark B    15 年前

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