Hurtig Tips Slik bruker du Android's Assist API

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.

1. Aktivering av standardassistenten

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.

2. Sende informasjon til assistenten

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.

3. Opprette en tilpasset assistent

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:

  • en VoiceInteractionService gjenstand
  • en VoiceInteractionSession gjenstand
  • en VoiceInteractionSessionService gjenstand
  • en XML-metadatafil som beskriver den tilpassede assistenten

Fø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.

4. Bruke den tilpassede assistenten

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.

Konklusjon

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+!