2013-11-21 7 views
10

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

13

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.

+0

Questo ha funzionato, Grazie mille uomo! – Sevros

+1

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

+0

Oops, sì, hai ragione, grazie per averlo capito. Ho aggiornato la risposta. –

3

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); 
Problemi correlati