Android-gebruikers hoeven tegenwoordig niet langer een browser te openen en een zoekopdracht uit te voeren om meer te weten te komen over dingen die ze tegenkomen tijdens het gebruik van een app. Ze kunnen in plaats daarvan een assistent gebruiken. Als u een apparaat bezit met Android 6.0 of hoger, bent u mogelijk al bekend met de standaardassistent, die aanvankelijk Google Now on Tap heette. De laatste tijd is de naam gewijzigd in zoeken op scherm.
Assistenten, hoewel contextgevoelig, zijn meestal niet erg nauwkeurig. Om de nauwkeurigheid te verbeteren, moeten app-ontwikkelaars de Assist-API gebruiken. In deze snelle tip introduceer ik de basisbeginselen van de API en help ik u op weg om uw eigen aangepaste assistent te maken.
Als je de assistent nog nooit op je apparaat of emulator hebt gebruikt, is deze waarschijnlijk nog niet ingeschakeld. Houd de startknop ingedrukt om dit in te schakelen. In het dialoogvenster dat verschijnt, drukt u op Ja, ik ben binnen knop.
U kunt nu vanuit elke app toegang krijgen tot de standaardassistent door eenvoudig op de startknop te drukken. Het is vermeldenswaard dat de standaardassistent deel uitmaakt van de Google-app en het beste werkt nadat u bent ingelogd op uw Google-account.
De standaard assistent is erg krachtig. Het kan automatisch contextgevoelige informatie leveren op basis van de huidige inhoud van het scherm. Dit gebeurt door de weergavehiërarchie van de actieve activiteit te analyseren.
Om het in actie te zien, maakt u een nieuwe activiteit in uw Android Studio-project en voegt u het volgende toe Tekstweergave
widget, die de naam heeft van een populaire roman, naar de lay-out:
Als u uw app nu uitvoert en lang op de startknop drukt, geeft de standaardassistent kaarten weer die enigszins gerelateerd zijn aan de inhoud van de Tekstweergave
widget.
Door aanvullende informatie naar de assistent te sturen, kunt u de nauwkeurigheid ervan verbeteren. Om dit te doen, moet u eerst het onProvideAssistContent ()
methode van uw Activiteit
klasse.
@Override public void onProvideAssistContent (AssistContent outContent) super.onProvideAssistContent (outContent);
U kunt nu de AssistContent
object om informatie naar de assistent te sturen. Als u bijvoorbeeld wilt dat de assistent een kaart weergeeft waarop de gebruiker over de roman op Goodreads kan lezen, kunt u de kaart gebruiken setWebUri ()
methode.
outContent.setWebUri (Uri.parse ("http://www.goodreads.com/book/show/13023.Alice_in_Wonderland"));
Dit is hoe de nieuwe kaart eruit ziet:
Met de Assist-API kunt u gestructureerde gegevens doorsturen naar de assistent met behulp van de setStructuredData ()
methode, die een JSON-LD-reeks verwacht. De eenvoudigste manier om de JSON-LD-reeks te genereren, is door de JSONObject
klasse en zijn leggen()
methode.
De volgende voorbeeldcode toont u hoe u gestructureerde gegevens over de roman kunt genereren en verzenden:
outContent.setStructuredData (nieuw JSONObject () .put ("@ type", "Book") .put ("auteur", "Lewis Carroll") .put ("name", "Alice in Wonderland") .put ("description "," Dit is een roman uit 1865 over een meisje genaamd Alice, "+" die door een konijnenhol valt en "+" een fantasiewereld binnentreedt. ") .ToString ());
Als u ervoor kiest om uw JSON-LD-tekenreeks met de hand te coderen, raad ik u aan ervoor te zorgen dat deze geldig is met de tool voor gestructureerde gegevenstests van Google..
Als u niet tevreden bent met de manier waarop de assistent van de Google-app uw gegevens verwerkt, kunt u overwegen om uw eigen assistent te maken. Dit kost niet veel moeite.
Alle aangepaste assistenten moeten het volgende hebben:
VoiceInteractionService
voorwerpVoiceInteractionSession
voorwerpVoiceInteractionSessionService
voorwerpMaak eerst een nieuwe Java-klasse met de naam MyAssistantSession en maak er een subklasse van VoiceInteractionSession
klasse. Op dit punt zou Android Studio automatisch een constructor ervoor moeten genereren.
public class MyAssistantSession breidt VoiceInteractionSession uit public MyAssistantSession (Context-context) super (context);
Door de onHandleAssist ()
methode van de klas, kunt u het gedrag van uw assistent definiëren. Laten we voorlopig de JSON-LD-reeks die we in de vorige stap hebben gegenereerd, parseren en de inhoud weergeven als een Geroosterd brood
bericht. Zoals je misschien al geraden hebt, moet je de JSON-LD string gebruiken om de getStructuredData ()
methode van de AssistContent
voorwerp.
In de volgende code ziet u hoe u de waarde van de JSON-LD-tekenreeksen kunt weergeven Omschrijving
sleutel als een Geroosterd brood
bericht.
@Override public void onHandleAssist (Bundle-gegevens, AssistStructure-structuur, AssistContent-inhoud) super.onHandleAssist (gegevens, structuur, inhoud); probeer // Gestructureerde gegevens ophalen JSONObject structuredData = nieuw JSONObject (content.getStructuredData ()); // Geef de beschrijving weer als Toast Toast.makeText (getContext (), structuredData.optString ("description"), Toast.LENGTH_LONG) .show (); catch (JSONException e) e.printStackTrace ();
EEN VoiceInteractionSession
object moet worden geïnstantieerd binnen een VoiceInteractionSessionService
voorwerp. Maak daarom een nieuwe Java-klasse met de naam MyAssistantSessionService en maak er een subklasse van VoiceInteractionSessionService
. Binnen zijn onNewSession ()
methode, bel de constructor van MyAssistantSession
.
public class MyAssistantSessionService breidt VoiceInteractionSessionService uit @Override openbare VoiceInteractionSession onNewSession (bundelbundel) return new MyAssistantSession (this);
Onze assistent heeft ook een VoiceInteractionService
voorwerp. Maak daarom een opgeroepen MyAssistantService. U hoeft geen code erin te schrijven.
public class MyAssistantService breidt VoiceInteractionService uit
Als u de configuratiegegevens van de assistent wilt opgeven, moet u een XML-metadatabestand maken en dit in de map plaatsen res / xml map van uw project. Het rootelement van het bestand moet een zijn
tag die de volledig gekwalificeerde namen van beide opgeeft VoiceInteractionService
en de VoiceInteractionSessionService
subklassen.
Hier is een metadatabestand voor voorbeelden:
Ten slotte, tijdens het declareren van de services in uw project AndroidManifest.xml bestand, zorg ervoor dat ze de BIND_VOICE_INTERACTION
toestemming.
Je aangepaste assistent is nu klaar.
Als u uw aangepaste assistent wilt gebruiken, moet u deze instellen als de standaardassistent van uw Android-apparaat. Open daarom de instellingen app en navigeer naar Apps> Standaardapps> Assist & spraakinvoer. Klik vervolgens op de Assist app optie om uw assistent te selecteren.
Als u nu uw app uitvoert en lang op de startknop drukt, zou u uw aangepaste assistent moeten kunnen zien Geroosterd brood
bericht.
In deze snelle tip hebt u geleerd hoe u de Assist-API kunt gebruiken om te communiceren met assistenten op het Android-platform. Je hebt ook geleerd hoe je een rudimentaire aangepaste assistent kunt maken. Maar een woord van waarschuwing: omdat assistenten bijna alle tekst op het scherm van een gebruiker kunnen lezen, moet u ervoor zorgen dat uw aangepaste assistent op een veilige manier gevoelige gegevens verwerkt.
Raadpleeg de officiële documentatie voor meer informatie over de Assist-API. En voor meer informatie over de allernieuwste codering en API's voor het Android-platform, bekijk enkele van onze andere cursussen en tutorials hier op Envato Tuts+!