Android-brukere i dag trenger ikke lenger å åpne en nettleser og utføre et søk for å lære om ting de snubler over når de bruker en app. De kan i stedet bruke en assistent. Hvis du eier en enhet som kjører Android 6.0 eller høyere, kan du kanskje allerede være kjent med standardassistenten, som i utgangspunktet ble kalt Google Nå på Trykk. Senest har navnet blitt endret til skjermsøk.
Assistenter, selv om kontekstfølsomme, er vanligvis ikke veldig nøyaktige. For å forbedre nøyaktigheten må apputviklere bruke Assist API. I dette raske tipset vil jeg presentere grunnleggende om API-en, og jeg hjelper deg med å komme i gang med å lage din egen tilpassede assistent.
Hvis du aldri har brukt assistenten på enheten din eller emulatoren, er den sannsynligvis ikke aktivert ennå. For å aktivere det, trykk og hold inne Hjem-knappen. I dialogboksen som dukker opp, trykker du på Ja, jeg er inne knapp.
Nå kan du få tilgang til standardassistenten fra en hvilken som helst app ved ganske enkelt å trykke lenge på hjemme-knappen. Det er verdt å merke seg at standardassistenten er en del av Google-appen, og fungerer best bare etter at du har logget på Google-kontoen din.
Standardassistenten er veldig kraftig. Den kan automatisk gi kontekstavhengig informasjon basert på det nåværende innholdet på skjermen. Det gjør det ved å analysere visningshierarkiet for den aktive aktiviteten.
For å se det i aksjon, opprett en ny aktivitet i Android Studio-prosjektet ditt, og legg til følgende TextView
widget, som har navnet på en populær roman, til oppsettet:
Hvis du kjører appen din nå og lenge trykker på hjemme-knappen, vil standardassistenten vise kort som er noe relatert til innholdet i TextView
widget.
Ved å sende tilleggsinformasjon til assistenten kan du forbedre nøyaktigheten. For å gjøre dette må du først overstyre onProvideAssistContent ()
metode for din Aktivitet
klasse.
@Override public void onProvideAssistContent (AssistContent outContent) super.onProvideAssistContent (outContent);
Du kan nå bruke AssistContent
motsette seg å sende informasjon til assistenten. Hvis du for eksempel vil at assistenten skal vise et kort som lar brukeren lese om romanen på Goodreads, kan du bruke setWebUri ()
metode.
outContent.setWebUri (Uri.parse ("http://www.goodreads.com/book/show/13023.Alice_in_Wonderland"));
Slik ser det nye kortet ut:
Assist-API lar deg også sende strukturert data til assistenten ved hjelp av setStructuredData ()
metode, som forventer en JSON-LD-streng. Den enkleste måten å generere JSON-LD-strengen er å bruke JSONObject
klasse og dens sette()
metode.
Følgende prøvekode viser hvordan du genererer og sender strukturerte data om romanen:
outContent.setStructuredData (ny JSONObject () .put ("@ type", "Book") .put ("author", "Lewis Carroll") .put ("navn", "Alice in Wonderland") .put "," Dette er en 1865 roman om en jente som heter Alice, "+" som faller gjennom et kaninhull og "+" går inn i en fantasiverden. ") .ToString ());
Hvis du velger å håndkode JSON-LD-strengen, foreslår jeg at du sørger for at den er gyldig ved hjelp av Googles strukturert datatestverktøy.
Hvis du ikke er fornøyd med hvordan Google-appens assistent håndterer dataene dine, bør du vurdere å opprette din egen assistent. Å gjøre det tar ikke mye arbeid.
Alle tilpassede assistenter må ha følgende:
VoiceInteractionService
gjenstandVoiceInteractionSession
gjenstandVoiceInteractionSessionService
gjenstandFørst oppretter du en ny Java-klasse som heter MyAssistantSession og gjør det til en underklasse av VoiceInteractionSession
klasse. På dette tidspunktet skal Android Studio automatisk generere en konstruktør for den.
offentlig klasse MyAssistantSession utvider VoiceInteractionSession offentlig MyAssistantSession (Context context) super (kontekst);
Ved å overstyre onHandleAssist ()
Metode for klassen, du kan definere oppførselen til din assistent. For nå, la oss bare få det til å analysere JSON-LD-strengen vi genererte i forrige trinn, og vise innholdet som en Skål
budskap. Som du kanskje har gjettet, for å hente JSON-LD-strengen, må du bruke getStructuredData ()
metode av AssistContent
gjenstand.
Følgende kode viser hvordan du viser verdien av JSON-LD-strengens beskrivelse
nøkkel som en Skål
budskap.
@Override public void onHandleAssist (Bundle data, AssistStructure struktur, AssistContent innhold) super.onHandleAssist (data, struktur, innhold); prøv // Hent strukturert data JSONObject structuredData = nytt JSONObject (content.getStructuredData ()); // Vis beskrivelse som Toast Toast.makeText (getContext (), structuredData.optString ("beskrivelse"), Toast.LENGTH_LONG) .show (); fangst (JSONException e) e.printStackTrace ();
EN VoiceInteractionSession
objektet må være instantiated inne a VoiceInteractionSessionService
gjenstand. Opprett derfor en ny Java-klasse som heter MyAssistantSessionService og gjør det til en underklasse av VoiceInteractionSessionService
. Inne i sin onNewSession ()
metode, ring konstruktøren til MyAssistantSession
.
offentlig klasse MyAssistantSessionService utvider VoiceInteractionSessionService @Overtrid offentlig VoiceInteractionSession onNewSession (Bundle Bundle) returner ny MyAssistantSession (dette);
Vår assistent trenger også a VoiceInteractionService
gjenstand. Opprett derfor en kalt MyAssistantService. Du trenger ikke skrive noen kode inni den.
offentlig klasse MyAssistantService utvider VoiceInteractionService
For å angi konfigurasjonsdetaljer for assistenten må du opprette en XML-metadatafil og plassere den i res / xml mappe av prosjektet ditt. Filens rotelement må være a
tag som angir de fullt kvalifiserte navnene til begge VoiceInteractionService
og VoiceInteractionSessionService
subklasser.
Her er en sample metadata-fil:
Til slutt, mens du erklærer tjenestene i prosjektet ditt AndroidManifest.xml fil, sørg for at de krever BIND_VOICE_INTERACTION
tillatelse.
Din tilpassede assistent er nå klar.
For å kunne bruke din tilpassede assistent må du sette den som din Android-enhetens standardassistent. Derfor åpner du innstillinger app og navigere til Apper> Standard Apps> Assist og stemmeinngang. Deretter klikker du på Assist app mulighet til å velge assistenten din.
På dette tidspunktet, hvis du kjører appen din og trykker på hjemme-knappen lenge, bør du kunne se din tilpassede assistent Skål
budskap.
I dette raske tipset lærte du hvordan du bruker Assist API for å samhandle med assistenter på Android-plattformen. Du lærte også å lage en rudimentær tilpasset assistent. Men et forsiktig ord: fordi assistenter kan lese nesten all teksten som er til stede på en brukers skjerm, må du sørge for at din tilpassede assistent håndterer sensitive data på en sikker måte.
Hvis du vil vite mer om Assist-API, kan du se den offisielle dokumentasjonen. Og for å lære mer om banebrytende koding og APIer for Android-plattformen, sjekk ut noen av våre andre kurs og opplæringsprogrammer her på Envato Tuts+!