Способ вложения нескольких голосовых триггеров при запуске приложения с помощью 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);