Android-Benutzer müssen heute keinen Browser mehr öffnen und suchen, um mehr über die Dinge zu erfahren, auf die sie bei der Verwendung einer App stoßen. Sie können stattdessen einen Assistenten verwenden. Wenn Sie ein Gerät mit Android 6.0 oder höher besitzen, sind Sie möglicherweise bereits mit dem Standardassistenten vertraut, der ursprünglich Google Now on Tap hieß. In letzter Zeit wurde der Name in Bildschirmsuche geändert.
Assistenten sind zwar kontextsensitiv, aber in der Regel nicht sehr genau. Um die Genauigkeit zu verbessern, müssen App-Entwickler die Assist-API verwenden. In diesem kurzen Tipp werde ich die Grundlagen der API vorstellen und Ihnen dabei helfen, Ihren eigenen benutzerdefinierten Assistenten zu erstellen.
Wenn Sie den Assistenten noch nie auf Ihrem Gerät oder Emulator verwendet haben, ist er wahrscheinlich noch nicht aktiviert. Halten Sie zum Aktivieren die Home-Taste gedrückt. Drücken Sie im angezeigten Dialogfeld die Ja, ich bin dabei Taste.
Sie können jetzt von jeder App aus auf den Standardassistenten zugreifen, indem Sie einfach die Home-Taste lange drücken. Beachten Sie, dass der Standardassistent Teil der Google-App ist und am besten funktioniert, nachdem Sie sich bei Ihrem Google-Konto angemeldet haben.
Der Standardassistent ist sehr leistungsfähig. Es kann automatisch kontextsensitive Informationen basierend auf den aktuellen Bildschirminhalten bereitstellen. Dazu wird die Ansichtshierarchie der aktiven Aktivität analysiert.
Um es in Aktion zu sehen, erstellen Sie eine neue Aktivität in Ihrem Android Studio-Projekt und fügen Sie die folgende hinzu Textvorschau
Widget, das den Namen eines populären Romans hat, zu seinem Layout:
Wenn Sie Ihre App jetzt ausführen und die Home-Taste lange gedrückt halten, zeigt der Standardassistent Karten an, die sich auf den Inhalt der App beziehen Textvorschau
Widget.
Durch Senden zusätzlicher Informationen an den Assistenten können Sie die Genauigkeit verbessern. Dazu müssen Sie zuerst die onProvideAssistContent ()
Methode Ihrer Aktivität
Klasse.
@Override public void onProvideAssistContent (AssistContent outContent) super.onProvideAssistContent (outContent);
Sie können jetzt die AssistContent
Objekt, um Informationen an den Assistenten zu senden. Wenn Sie möchten, dass der Assistent eine Karte anzeigt, mit der der Benutzer über Goodreads lesen kann, können Sie die setWebUri ()
Methode.
outContent.setWebUri (Uri.parse ("http://www.goodreads.com/book/show/13023.Alice_in_Wonderland"));
So sieht die neue Karte aus:
Mit der Assist-API können Sie auch strukturierte Daten mit dem Assistenten an den Assistenten übergeben setStructuredData ()
Methode, die einen JSON-LD-String erwartet. Die einfachste Methode zum Generieren der JSON-LD-Zeichenfolge besteht in der Verwendung der JSONObject
Klasse und seine stellen()
Methode.
Der folgende Beispielcode zeigt, wie Sie strukturierte Daten zum Roman generieren und senden:
outContent.setStructuredData (neues JSONObject () .put ("@ type", "Book") .put ("author", "Lewis Carroll") .put ("name", "Alice in Wonderland") .put ("description.) "," Dies ist ein 1865er Roman über ein Mädchen namens Alice, "+", das durch ein Kaninchenloch fällt und "+" in eine Fantasiewelt eintritt. ") .ToString ());
Wenn Sie Ihre JSON-LD-Zeichenfolge manuell kodieren, sollten Sie sicherstellen, dass sie mit dem Structured Data Testing Tool von Google gültig ist.
Wenn Sie mit dem Umgang des Google-Assistenten mit Ihren Daten nicht zufrieden sind, sollten Sie einen eigenen Assistenten erstellen. Dies erfordert keine großen Anstrengungen.
Alle benutzerdefinierten Assistenten müssen über Folgendes verfügen:
VoiceInteractionService
ObjektVoiceInteractionSession
ObjektVoiceInteractionSessionService
ObjektErstellen Sie zuerst eine neue Java-Klasse mit dem Namen MyAssistantSession und mache es zu einer Unterklasse der VoiceInteractionSession
Klasse. An diesem Punkt sollte Android Studio automatisch einen Konstruktor dafür erstellen.
public class MyAssistantSession erweitert VoiceInteractionSession public MyAssistantSession (Kontextkontext) super (Kontext);
Durch das Überschreiben der onHandleAssist ()
Als Methode der Klasse können Sie das Verhalten Ihres Assistenten definieren. Lassen Sie uns jetzt den im vorherigen Schritt generierten JSON-LD-String analysieren und den Inhalt als a anzeigen Toast
Botschaft. Wie Sie vielleicht schon vermutet haben, müssen Sie zum Abrufen der JSON-LD-Zeichenfolge die Zeichenfolge verwenden getStructuredData ()
Methode der AssistContent
Objekt.
Der folgende Code zeigt, wie der Wert der JSON-LD-Zeichenfolge angezeigt wird Beschreibung
Schlüssel als Toast
Botschaft.
@Override public void onHandleAssist (Daten bündeln, Struktur AssistStructure, Inhalt AssistContent) super.onHandleAssist (Daten, Struktur, Inhalt); try // Strukturierte Daten abrufen JSONObject StructuredData = neues JSONObject (content.getStructuredData ()); // Beschreibung als Toast anzeigen Toast.makeText (getContext (), strukturierteData.optString ("description"), Toast.LENGTH_LONG) .show (); catch (JSONException e) e.printStackTrace ();
EIN VoiceInteractionSession
Das Objekt muss innerhalb von a instanziiert werden VoiceInteractionSessionService
Objekt. Erstellen Sie daher eine neue Java-Klasse mit dem Namen MyAssistantSessionService und mache es eine Unterklasse von VoiceInteractionSessionService
. Innerhalb seiner onNewSession ()
Methode, rufen Sie den Konstruktor von auf MyAssistantSession
.
public class MyAssistantSessionService erweitert VoiceInteractionSessionService @Override public VoiceInteractionSession onNewSession (Bundle-Paket) return new MyAssistantSession (this);
Unser Assistent braucht auch einen VoiceInteractionService
Objekt. Erstellen Sie deshalb einen gerufenen MyAssistantService. Sie müssen keinen Code schreiben.
public class MyAssistantService erweitert VoiceInteractionService
Um die Konfigurationsdetails des Assistenten anzugeben, müssen Sie eine XML-Metadatendatei erstellen und in der Datei ablegen res / xml Ordner Ihres Projekts. Das Root-Element der Datei muss a sein
Tag, der die vollständig qualifizierten Namen der beiden angibt VoiceInteractionService
und das VoiceInteractionSessionService
Unterklassen.
Hier ist eine Beispiel-Metadatendatei:
Zuletzt, während Sie die Dienste in Ihrem Projekt deklarieren AndroidManifest.xml Datei, stellen Sie sicher, dass sie die BIND_VOICE_INTERACTION
Genehmigung.
Ihr individueller Assistent ist jetzt bereit.
Damit Sie Ihren benutzerdefinierten Assistenten verwenden können, müssen Sie ihn als Standardassistenten Ihres Android-Geräts festlegen. Öffnen Sie deshalb die die Einstellungen App und navigieren zu Apps> Standard-Apps> Assist & Spracheingabe. Klicken Sie anschließend auf App unterstützen Option, um Ihren Assistenten auszuwählen.
Wenn Sie zu diesem Zeitpunkt Ihre App ausführen und die Home-Taste lange drücken, sollten Sie in der Lage sein, die von Ihrem benutzerdefinierten Assistenten anzuzeigen Toast
Botschaft.
In diesem kurzen Tipp haben Sie gelernt, wie Sie mit der Assist-API mit Assistenten auf der Android-Plattform interagieren können. Sie haben auch gelernt, wie Sie einen einfachen Assistenten erstellen. Aber Vorsicht: Da Assistenten fast den gesamten auf dem Bildschirm eines Benutzers vorhandenen Text lesen können, müssen Sie sicherstellen, dass Ihr benutzerdefinierter Assistent vertrauliche Daten sicher behandelt.
Weitere Informationen zur Assist-API finden Sie in der offiziellen Dokumentation. Um mehr über die neuesten Codierungen und APIs für die Android-Plattform zu erfahren, lesen Sie einige unserer Kurse und Tutorials hier bei Envato Tuts+!