Как я могу узнать, является ли строка поиска, возвращенная из SearchManager, результатом VoiceSearch? - PullRequest
0 голосов
/ 26 января 2010

В моем 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 ]

1 голос
/ 27 января 2010

Отвечая на мой собственный вопрос: если я просто наберу запрос, QUERY и USER_QUERY оба вернут напечатанный текст Если я говорю, USER_QUERY равно нулю.

0 голосов
/ 26 января 2010

Я предполагаю, что голосовой ввод - это всего лишь редактор методов ввода (IME), и вы не сможете получить никакой информации о том, какой IME использовался для ввода текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...