Способ вложения нескольких голосовых триггеров при запуске приложения с помощью GDK

Есть ли способ вложить голосовые триггеры при запуске приложения в Google Glass с помощью GDK? Например, вместо того, чтобы просто сказать "хорошо, стекло" -> "Какой у него уровень мощности?" Я хотел бы, чтобы приложение представило опцию. Например "ок, стекло" -> "Какой у него уровень мощности?" -> "Более 9000" ИЛИ "До 9000". Любая помощь будет отличной!

2 ответа

Решение

Если на Glass установлено несколько операций / служб с одинаковым фильтром намерений триггера, все их имена (в зависимости от android:label атрибут <activity> или же <service> отметить в AndroidManifest.xml) появится в однозначном "подменю", когда вы говорите, что голосовой триггер.

Например (предположим, что res/xml/play_a_game_trigger.xml представляет собой голосовой триггер для строки "играть в игру"):

<activity android:label="Tennis">
    <intent-filter>
        <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
    </intent-filter>
    <meta-data android:name="com.google.android.glass.VoiceTrigger"
        android:resource="@xml/play_a_game_trigger" />
</activity>
<activity android:label="Bowling">
    <intent-filter>
        <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
    </intent-filter>
    <meta-data android:name="com.google.android.glass.VoiceTrigger"
        android:resource="@xml/play_a_game_trigger" />
</activity>

даст вам голосовой поток меню, который выглядит как

ok glass → play a game → Tennis
                         Bowling

Однако обратите внимание, что это меню также будет включать действия / сервисы из других APK, которые также используют тот же голосовой триггер.

Вы можете найти более подробную информацию на странице " Голосовой ввод" документации GDK.

Правильный способ сделать это - использовать тег ввода внутри триггера.

<trigger keyword="@string/start_app" >

    <input prompt="@string/promt_text" />

</trigger>

Это запрашивает ввод и ждет больше аудио речи.

Затем в своей деятельности вы можете захватить этот текст с помощью:

ArrayList<String> text = getIntent().getExtras().getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
Другие вопросы по тегам