Есть ли способ вставить голосовые триггеры при запуске приложения в Google Glass с помощью GDK? Например, вместо того, чтобы просто сказать "хорошо, стекло" → "Каков его уровень мощности?" Я бы хотел, чтобы приложение было доступно. Например, "хорошо, стекло" → "Каков его уровень мощности?" → "Более 9000" ИЛИ "Менее 9000". Любая помощь будет большой!
Способ установки нескольких голосовой триггеров при запуске приложения с помощью GDK
Ответ 1
Если на стекле установлено несколько действий/сервисов, имеющих один и тот же фильтр намерений с использованием голосового пуска, все их имена (основанные на атрибуте 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.
Ответ 2
Правильный способ сделать это - использовать тег input внутри триггера
<trigger keyword="@string/start_app" >
<input prompt="@string/promt_text" />
</trigger>
Это вызывает ввод и ожидает больше звуковой речи.
Затем в вашей деятельности вы можете записать этот текст с помощью:
ArrayList<String> text = getIntent().getExtras().getStringArrayList(RecognizerIntent.EXTRA_RESULTS);