C'è un modo per nidificare i trigger vocali quando si avvia un'applicazione su Google Glass utilizzando GDK? Ad esempio, invece di dire "ok, glass" -> "Qual è il suo livello di potenza?" Mi piacerebbe che l'app presenti un'opzione. Ad esempio "ok, vetro" -> "Qual è il suo livello di potenza?" -> "Oltre 9000" OPPURE "Under 9000". Qualsiasi aiuto sarebbe grande!Modo per nidificare più trigger voce quando si avvia un'app con GDK
risposta
Se si dispone di più attività/servizi installati su vetro che hanno la stessa voce innescare filtro intenti, tutti i loro nomi (in base all'attributo android:label
del <activity>
o <service>
tag nel AndroidManifest.xml
) apparirà in un "sottomenu" disambiguazione quando pronunci quella voce innescata.
Per esempio (per scontato che res/xml/play_a_game_trigger.xml
rappresenta un trigger voce per la stringa "giocare una partita"):
<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>
darebbe un flusso menu vocale che sembra
ok glass → play a game → Tennis
Bowling
Si noti, tuttavia, che questo menu includerebbe anche attività/servizi da altri APK che utilizzano lo stesso trigger vocale.
È possibile trovare ulteriori dettagli nella pagina Voice Input della documentazione GDK.
Il modo corretto per farlo è usare un tag ingresso all'interno del trigger
<trigger keyword="@string/start_app" >
<input prompt="@string/promt_text" />
</trigger>
Ciò induce un ingresso e attende per il discorso più audio.
Poi nella vostra attività è possibile catturare questo testo con:
ArrayList<String> text = getIntent().getExtras().getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
Questo ha funzionato, Grazie mille uomo! – Sevros
Non dovrebbe 'android: name =" Bowling "' be 'android: label =" Bowling "'? Sono sicuro che ricade sul nome dell'attività ma l'etichetta dovrebbe essere l'attributo appropriato. – JRomero
Oops, sì, hai ragione, grazie per averlo capito. Ho aggiornato la risposta. –