В моем проекте для Android мы недавно добавили Голосовой поиск по документации.Работает нормально, но только при поиске по одному слову.Похоже, что это не намеченное поведение, поскольку в примерах Google они ищут «поездки в Мауи».
Мы пробовали много команд поиска на разных устройствах с помощью приложения Google Assistant (последняя версия), а такжекак запуск через adb.
Итак, что работает для нас: «Хорошо, Google, ищите шоколад в {ourApp}».
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION --es query 'chocolate'
Результат: приложение запускается на правильном экране с правильнымquery
Что не работает, хотя: "Хорошо, Google, ищите мороженое в {ourApp}".
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION --es query 'ice cream'
Результат: Google Assistant отображает результаты веб-поиска и через adb мы получаем:
Starting: Intent { act=com.google.android.gms.actions.SEARCH_ACTION pkg=cream (has extras) }
Error: Activity not started, unable to resolve Intent { act=com.google.android.gms.actions.SEARCH_ACTION flg=0x10000000 pkg=cream (has extras) }
Это выглядит так, как будто команда была неправильной, поскольку система распознает "сливки" в качестве имени пакета.Результат тот же, даже если мы явно добавим имя пакета в команду adb.
Наш код интеграции:
<activity
android:name=".features.search.activities.SearchResultsActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
А затем в SearchResultsActivity:
searchTerm = intent.getStringExtra(SEARCH_TERM_KEY) ?: intent.getStringExtra(SearchManager.QUERY).orEmpty()
Как добиться поиска по нескольким словам с помощью Google Assistant?