Как интегрировать поисковую активность с голосовым поиском Ok Google?

Я пытаюсь реализовать интеграцию с Google Voice Search Ok. Тем не менее, я не могу сделать глубокие ссылки на мое приложение, когда я говорю "Поиск Android по app_name". Вместо этого он просто ищет термин в сети.

Вот что я сделал:

  1. Создать /res/xml/searchable.xml

    <?xml version="1.0" encoding="utf-8"?>
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/app_name"
        android:hint="@string/search_hint">
    </searchable>
    
  2. Создать новую активность

    public class ExposedSearchActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            String search = getIntent().getStringExtra(SearchManager.QUERY);
            Log.wtf("", "q=" + search);
        }
    }
    
  3. Прикрепить фильтры намерений к поисковой активности

    <activity
        android:name=".search.ExposedSearchActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:screenOrientation="fullSensor">
        <!--Deeplink from google now-->
        <intent-filter>
            <action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
        <!--Making it searchable-->
        <intent-filter>
            <action android:name="android.intent.action.SEARCH"/>
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
    </activity>
    
  4. Моим тестовым устройством является Nexus 5 под управлением Lollipop LPX13D с поиском Google 4.0.26.1499465.arm

Какие еще шаги я мог забыть? Заранее спасибо.

1 ответ

Решение

После долгих поисков я нашел ответ в комментарии к Google+ автора блога Ярека Вилькевича.

Да, приложение должно быть опубликовано в Play Store, чтобы эта функция работала. Один из способов помочь отладить ваш конец - вызвать намерение через adb, например: adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION -e query foo

Поэтому я протестировал эту функцию в приложении, которое уже есть в Play Store, и оно работает безупречно.

Я нашел рабочее решение для этих команд голосового поиска Google для нашего приложения Android.

Перейдите по ссылкам ниже, чтобы все заработало:

1) https://gist.github.com/raveeshbhalla/186325d1bb25d13bd7a0

2) https://github.com/google/search-samples/issues/24

3) https://antonioleiva.com/voice_search_google_now/

4) https://developers.google.com/voice-actions/system/

5) https://developer.android.com/guide/components/intents-common

В качестве вышеприведенного ответа указан Some Noob Student. я собираюсь дальше для того, чтобы проверить это с отладкой apk с добавлением строки в поисковом запросе?

Откройте командную строку на вашем компьютере, затем измените путь к вашему пути adb. затем выполните следующие команды.

Примечание: перед выполнением следующих команд закройте приложение отладки, затем протестируйте.

1) adb shell запускается -a com.google.android.gms.actions.SEARCH_ACTION -e запрос app_package_name

2) adb shell запускается -a com.google.android.gms.actions.SEARCH_ACTION -e запрос "Hello" app_package_name

Другие вопросы по тегам