2013-11-21 5 views
10

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

ответ

13

Если у вас есть несколько направлений деятельности/услуги, установленные на стекла, которые имеют тот же голос вызывают пристальный фильтр, все их имена (на основе атрибута 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 Voice Input.

+0

Это работало, Вы так много людей! – Sevros

+1

Не должен 'android: name =" Боулинг "' быть 'android: label =" Bowling "'? Я уверен, что он возвращается к имени активности, но метка должна быть соответствующим атрибутом. – JRomero

+0

Ой, да, вы правы, спасибо, что поймали это. Я обновил ответ. –

3

Правильный способ сделать это с помощью ввода тег внутри триггера

<trigger keyword="@string/start_app" > 

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

</trigger> 

Это побуждает вход и ожидает получения дополнительной звуковой речи.

Тогда в вашей деятельности вы можете захватить этот текст с:

ArrayList<String> text = getIntent().getExtras().getStringArrayList(RecognizerIntent.EXTRA_RESULTS);