Android-användare idag behöver inte längre öppna en webbläsare och göra en sökning för att lära sig om saker de snubblar över när de använder en app. De kan istället använda en assistent. Om du äger en enhet som kör Android 6.0 eller senare kanske du redan är bekant med sin standardassistent, som ursprungligen kallades Google Nu på Tryck. Senast har sitt namn ändrats till skärmsökningen.
Assistenter, men kontextkänsliga, brukar inte vara mycket exakta. För att förbättra noggrannheten måste apputvecklare använda Assist API. I det här snabba tipset presenterar jag grunderna för API: n, och jag hjälper dig att komma igång med att skapa din egen anpassade assistent.
Om du aldrig har använt assistenten på din enhet eller emulator är det antagligen inte aktiverat än. För att aktivera det, tryck och håll hemknappen intryckt. I dialogrutan som dyker upp trycker du på Ja, jag är in knapp.
Nu kan du få tillgång till standardassistenten från alla appar genom att helt enkelt trycka på hemknappen. Det är värt att notera att standardassistenten är en del av Google-appen och fungerar bäst först efter att du loggat in på ditt Google-konto.
Standardassistenten är mycket kraftfull. Den kan automatiskt tillhandahålla kontextkänslig information baserat på skärmens aktuella innehåll. Det gör det genom att analysera synhierarkin för den aktiva aktiviteten.
Om du vill se den i åtgärd skapar du en ny aktivitet i ditt Android Studio-projekt och lägger till följande Textview
widget, som har namnet på en populär roman, till dess layout:
Om du kör din app nu och länge trycker på hemknappen, visar standardassistenten kort som är något relaterade till innehållet i Textview
widget.
Genom att skicka ytterligare information till assistenten kan du förbättra dess noggrannhet. För att göra det måste du först åsidosätta onProvideAssistContent ()
metod för din Aktivitet
klass.
@Override public void onProvideAssistContent (AssistContent outContent) super.onProvideAssistContent (outContent);
Du kan nu använda AssistContent
motsätta sig att skicka information till assistenten. Om du till exempel vill att assistenten ska visa ett kort som låter användaren läsa om romanen på Goodreads kan du använda setWebUri ()
metod.
outContent.setWebUri (Uri.parse ("http://www.goodreads.com/book/show/13023.Alice_in_Wonderland"));
Så här ser det nya kortet ut:
Assist API ger dig också möjlighet att skicka strukturerad data till assistenten med hjälp av setStructuredData ()
metod som förväntar sig en JSON-LD-sträng. Det enklaste sättet att generera JSON-LD-strängen är att använda JSONObject
klass och dess sätta()
metod.
Följande provkod visar hur du genererar och skickar strukturerad data om romanen:
outContent.setStructuredData (ny JSONObject () .put ("@ type", "Book") .put ("author", "Lewis Carroll") .put ("namn", "Alice in Wonderland"). "," Detta är en 1865-roman om en tjej som heter Alice, "+" som faller genom ett kaninhål och "+" går in i en fantasiverden. ") .ToString ());
Om du väljer att handkoda din JSON-LD-sträng, föreslår jag att du ser till att den är giltig med Googles strukturerade datatestverktyg.
Om du inte är nöjd med hur Google Apps-assistenten hanterar dina data, bör du överväga att skapa din egen assistent. Att göra så tar inte mycket ansträngning.
Alla anpassade assistenter måste ha följande:
VoiceInteractionService
objektVoiceInteractionSession
objektVoiceInteractionSessionService
objektSkapa först en ny Java-klass som heter MyAssistantSession och gör det till en underklass av VoiceInteractionSession
klass. Vid denna tidpunkt bör Android Studio automatiskt generera en konstruktör för den.
public class MyAssistantSession utökar VoiceInteractionSession public MyAssistantSession (Context context) super (context);
Genom att överstyra onHandleAssist ()
klassens metod kan du definiera ditt assistents beteende. För nu, låt oss bara göra det att analysera den JSON-LD-sträng som vi genererade i föregående steg och visa innehållet som en Rostat bröd
meddelande. Som du kanske har gissat för att hämta JSON-LD-strängen måste du använda getStructuredData ()
metod för AssistContent
objekt.
Följande kod visar hur du visar värdet på JSON-LD-strängen beskrivning
nyckel som en Rostat bröd
meddelande.
@Override public void onHandleAssist (Bundle data, AssistStructure struktur, AssistContent innehåll) super.onHandleAssist (data, struktur, innehåll); försök // Hämta strukturerad data JSONObject structuredData = nytt JSONObject (content.getStructuredData ()); // Visa beskrivning som Toast Toast.makeText (getContext (), structuredData.optString ("beskrivning"), Toast.LENGTH_LONG) .show (); fånga (JSONException e) e.printStackTrace ();
en VoiceInteractionSession
objekt måste vara instansierat inom a VoiceInteractionSessionService
objekt. Skapa därför en ny Java-klass som heter MyAssistantSessionService och gör det till en underklass av VoiceInteractionSessionService
. Inuti sin onNewSession ()
metod, ring konstruktören av MyAssistantSession
.
public class MyAssistantSessionService utökar VoiceInteractionSessionService @Override public VoiceInteractionSession onNewSession (Bundle Bundle) returnera nytt MyAssistantSession (detta);
Vår assistent behöver också a VoiceInteractionService
objekt. Skapa därför en kallad MyAssistantService. Du behöver inte skriva någon kod inuti den.
offentlig klass MyAssistantService utökar VoiceInteractionService
För att ange konfigurationsinformation för assistenten måste du skapa en XML-metadatafil och placera den i res / xml mapp på ditt projekt. Filens rotelement måste vara a
tagg som anger de fullt kvalificerade namnen på båda VoiceInteractionService
och den VoiceInteractionSessionService
subklasser.
Här är en samplingsmetadatafil:
Slutligen, samtidigt som du förklarar tjänsterna i ditt projekt AndroidManifest.xml fil, se till att de kräver BIND_VOICE_INTERACTION
lov.
Din anpassade assistent är nu klar.
För att kunna använda din anpassade assistent måste du ställa in den som din Android-enhetens standardassistent. Öppna därför inställningar app och navigera till Appar> Standardprogram> Hjälp och röstinmatning. Klicka sedan på Assist app möjlighet att välja din assistent.
Om du kör din app och länge trycker på hemknappen ska du kunna se din anpassade assistent Rostat bröd
meddelande.
I det här snabba tipset lärde du dig hur du använder Assist API för att interagera med assistenter på Android-plattformen. Du lärde dig också att skapa en rudimentär anpassad assistent. Men ett varningstecken: eftersom assistenter kan läsa nästan all text som finns på användarens skärm måste du se till att din anpassade assistent hanterar känsliga uppgifter på ett säkert sätt.
För att lära dig mer om Assist API, se dess officiella dokumentation. Och för att lära dig mer om avancerad kodning och API för Android-plattformen, kolla in några av våra andra kurser och handledning här på Envato Tuts+!