Innholdsfortegnelse:
- Tre typer stemmekontroll
- Konfigurer intentfilteret
- Få taleteksten
- Åpne en tilkobling til Google Play
- / addTask
- Test det ut!
Video: How to set up voice match 2024
Har du et Android Wear-klokke? I så fall elsker du sannsynligvis det, og du har allerede lagt merke til at det ikke har et tastatur. Hvis ikke, prøv å lete etter en. Jeg venter.
Hvis du er en Android Wear-utvikler, bør du vite at de fleste apper på Android Wear vanligvis er skrivebeskyttet. Android Wear-apper er nyttige for å bli varslet om bestemte ting du må gjøre, men hvis du vil gjøre noe komplisert, vil du mest sannsynlig trekke ut telefonen din og gjøre det der heller enn på klokken din.
Stemmekontroll er et spennende unntak fra denne regelen. Med stemme diktering kan du enkelt "skrive" informasjon i klokken din uten å måtte bruke et tastatur.
Her lærer du hvordan du legger til nye elementer i databasen din ved hjelp av stemmen din.
Tre typer stemmekontroll
Android Wear gir tre typer stemmekontroller ut av boksen.
-
Systemleverte stemmehandlinger, for eksempel "Noter" eller "Ring en drosje / taxi".
-
App-gitt stemme "Start" -kommandoer, for eksempel "Start oppgaver" eller "Start MyRunningApp"
-
Stemmeformidling med fri form
De systemleverte stemmehandlingene er de mest praktiske for brukere. De krever ikke at brukeren lærer noen nye talemeldinger, og de "bare jobber" hvor som helst. Hvis en av Android-innebygde stemmehandlinger passer for appen din, er dette den beste måten å gå.
App-gitt stemme "Start" -kommandoer er en levedyktig, men mindre kraftig måte å legge til talekommandoer på appen din. Hver aktivitet i appen din kan ha et eget startnavn som er spesifisert av aktivitetens etikett. Hvis du for eksempel angir aktivitetslabel for oppgaver til MyTasksApp, vil aktivitetene Oppgaver starte når brukeren sier "Start MyTasksApp". I motsetning til de systemleverte stemmehandlingene, som gjenkjenner vanlige alternativer til talehandling, må brukeren matche etiketten nøyaktig. Å si "Start TasksApp" vil ikke starte appen din, for eksempel.
Alternativet for gratisformet stemme diktat er et meget kraftig alternativ, men det krever at brukeren allerede er i appen din for å kunne dra nytte av det. Fordi det ikke alltid er klart hvordan du starter en Android Wear-app, er dette alternativet en god, men mindre vanlig.
Android Wear leveres med en system-gitt "Not a note" -handling, så la oss bruke det for å legge til en oppgave i vår app.
Konfigurer intentfilteret
Når brukeren sier "Noter" til deres Android-klokke, sendes den resulterende teksten til appen din via en Intent. For å fange den hensikten må du opprette en aktivitet og et hensiktsfilter som samsvarer med hensikten.
Legg til en TakeVoiceNote-aktivitet til AndroidManifest. xml av Wear-appen din, og registrer et hensiktsfilter for å fange SELF_NOTE-intensjonen:
Få taleteksten
Det er det enkleste i verden å få utdataene fra Speech recognizer-aktiviteten. Du må bare legge til TakeVoiceNote-aktiviteten og hente teksten fra hensikten, slik som:
offentlig klasse TakeVoiceNote utvider aktivitet {@Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); String voiceNote = getIntent (). getStringExtra (Intent. EXTRA_TEXT);}}
Det er det! Uansett hva brukeren sa, har blitt transkribert og plassert i voiceNote-variabelen.
Nå er det vanskelig å gjøre med den teksten.
Åpne en tilkobling til Google Play
Programmene for talehandling er ganske enkle, men for å bruke dem må du konfigurere Google Play Services-APIer, og de er litt mer kompliserte å bruke.
For å legge til Google Play Services Location API til prosjektet ditt, legg følgende avhengighet i byggingen din. config-fil:
avhengigheter {compile 'com. Google. android. gms: play-services-wearable: 6. 5. 87 '}
Neste, legg til følgende for din AndroidManifest. xml:
" com. google. android. gms. versjon " android: verdi = " @ heltall / google_play_services_version />
For å opprette en forbindelse til Google Play-tjenestene, legg til følgende for aktiviteten din:
// The Google API, for brukbar tjenester GoogleApiClient googleApiClient; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); GoogleApiClient = ny GoogleApiClient. Builder (dette). addConnectionCallbacks (dette). addOnConnectionFailedListener (dette). addApi (Wearable. API). bygge(); …} @Overtrid offentlig tomgang onStart () {super. onStart (); GoogleApiClient. koble(); } @Override public void onStop () { googleApiClient. koble fra(); super. onStop ();}
Husk at program-IDen til din telefonapp og Wear-appen må være den samme! Hvis de er forskjellige, vil forbindelsen ikke bli etablert.
Denne koden oppretter et nytt GoogleApiClient-objekt i din onCreate () for å koble deg til Google Play-tjenestene, og det forsøker å koble til i onStart () og koble fra i onStop (). GoogleApiClient trenger et tilbakeringingsobjekt for å informere det når en tilkobling er opprettet, så du må legge til tilbakeringinger i aktiviteten din.
offentlig klasse TakeVoiceNote utvider Aktivitetsredskaper GoogleApiClient. ConnectionCallbacks, GoogleApiClient. OnConnectionFailedListener { @Override offentlig void onConnected (Bundle connectionHint) { // Koblet i Google Spill tjenester! // Dette er der du vil skrive din ny oppgave til på < // database. } @Override offentlig void onConnectionSuspended (int årsak) { // The Google Play < tilkobling har er avbrutt. // deaktivering noen UI komponenter at avhengige på Google // API-er inntil onConnected () er heter. // // Dette eksempel doesn t behovet til gjør noe her. } @Override offentlig void onConnectionFailed (ConnectionResult resultat) { // Dette tilbakeringing er < viktig i håndtering feil // at kan oppstå mens forsøker i koble > med // Google. // for mer informasjon om hvordan til håndtere feil, // > se // // utvikler. android. com / google / auth / api-klient. HTML } } Gratulerer! Du har nå konfigurert en tilkobling til Google Play Services som automatisk kobles fra når aktiviteten din er stoppet. Det neste trinnet er å be telefonen om å opprette en ny oppgave.Be om telefonen for å legge til en ny oppgave Nå som du har en forbindelse til Google Play, er neste trinn å sende taleteksten til telefonen din slik at telefonen kan legge til en ny Oppgave i databasen. Oppdater metoden onConnected () for å sende en melding til telefonen din med innholdet i stemme dikteringen: offentlig klasse TakeVoiceNote utvider Aktivitet implementerer GoogleApiClient. ConnectionCallbacks, GoogleApiClient. OnConnectionFailedListener {// Banen (som en URI) som identifiserer // operasjonen du vil utføre på håndsettet.
privat statisk endelig streng PATH_ADD_TASK =
"/ addTask
"
;
… @Override Offentlig tomt påConnected (Bundle bundle) { Log. d (" TakeVoiceNote ", " onConnected " ); // Talegjenkjennelsesteksten sendes inn via // hensikt String voiceNote = getIntent (). getStringExtra (Intent. EXTRA_TEXT); // Konverter strengen til byte siste byte [] voiceNoteBytes = voiceNote. getBytes (Charset. forName (" utf-8 ")); // Få en liste over alle enhetene du ' re // er koblet til. Vanligvis vil dette bare være din // telefon. Andre enheter vil ignorere meldingen din. bærbar. NodeApi. getConnectedNodes (GoogleApiClient). setResultCallback (new ResultCallback () { @Override offentlig ugyldig påResultat (GetConnectedNodesResult noder) { for (Node node: nodes. getNodes ()) { // Send telefonen en melding som ber om det // det legger oppgaven i databasen Wearable. MessageApi. SendMessage (googleApiClient, node. GetId (), PATH_ADD_TASK, < voiceNoteBytes); } finish (); } }); } } Opprett den nye oppgaven på telefonenDet eneste du må gjøre er å lytte etter meldingen på telefonen, slik at du kan opprette en ny oppgave når du blir bedt om det. Du gjør dette med en enkel WearableListenerService. Opprett en ny klasse med navnet AddTaskWearableListenerService, og legg til følgende kode: offentlig klasse AddTaskWearableListenerService utvider WearableListenerService {// Skal matche strengen i TakeVoiceNote privat statisk sluttlinje PATH_ADD_TASK = "/ addTask"; @Override public void onMessageReceived (MessageEvent messageEvent) {if (PATH_ADD_TASK.equal (messageEvent. getPath ())) {// Opprett ContentValues-objektet som lagrer alle // av informasjonen for oppgaven String title = new String (messageEvent. getData (), Charset.Name ("utf-8")); ContentValues values = new ContentValues (); verdier. sett (COLUMN_TITLE, tittel); verdier. sett (COLUMN_NOTES, "); values. put (COLUMN_DATE_TIME, System. currentTimeMillis ()); // Sett inn oppgaven i databasen getContentResolver (). Sett inn (CONTENT_URI, verdier);}}} Du må registrer tjenesten i telefonprogrammets AndroidManifest. xml, så legg til følgende i programknutepunktet ditt:
Test det ut!
Hvis du bruker en emulator for din Android Wear-enheten, vil du koble den til Android-telefonen din.Når det er oppe, gå videre og trykk på Android Wear for å åpne handlingsmenyen, og klikk deretter på Notat-alternativet. > Hvis du bruker en watchemulator, skriver du inn svaret ditt.
Når notatet lagres, trekker du opp appen Oppgaver på telefonen, og du bør se det nye elementet:
Gratulerer! Du har lykkes med å diktere et stemmenotat og lagret det i oppgavene app.
Det finnes mange interessante ting du kan gjøre med Voice Controls på Android og Android Wear-plattformene., c heck ut Adding Voice Capabilities og Motta Voice Input i en varsel artikler på Android Developer nettsted. Glad hacking!