В моем 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 на клавиатуре или на оборудовании. Кнопка поиска , но я не вижу, как обнаружить, что поиск был начат с помощью кнопки со значком «микрофон» или кнопки «Поиск» на панели поиска.
(В случае голосового поиска мне нужно передать текст обратно пользователю, пока я выполняю дополнительный поиск в Интернете. Для текстового поиска повторение того, что набрал пользователь, является излишним.)
Как я могу определить разницу?