Google Assistant Slices für Android – Teil 2 | Lähde: Cédric F | Februar 2022

Enge Integration der Android-Anwendung mit dem Assistenten

Cédric F

U Vorheriger Artikelhaben wir gesehen, wie Sie Ihrer App Google Assistant-Unterstützung hinzufügen. Jetzt ist es an der Zeit, einen Schritt weiter zu gehen und eine wunderbare Benutzererfahrung direkt in Google Assistant bereitzustellen, sodass der Benutzer die App nicht ausführen muss, um damit zu interagieren. Dies wird dank Slices erledigt.

Slices sind kleine Karten Benutzeroberfläche, das Google Assistant enthält, um eine umfassendere Benutzererfahrung zu bieten. Sie können aus der API extrahierte Informationen sowie Bilder und Aktionsschaltflächen enthalten.

Sie sind eine Möglichkeit, mit Ihrer App zu interagieren, ohne im Vollbildmodus ausgeführt zu werden. Die Benutzererfahrung ist für Google Assistant kontextbezogen und dialogorientiert.

Es werden Scheiben verwendet grundlegende UI-Blöcke wie Liste, Kopfzeile, Zeile, Bilder, Schaltflächen … Ein Programmierer kann eine Benutzeroberfläche auf deklarative Weise wie Jetpack Compose erstellen.

Slices bieten eine schnelle Möglichkeit, auf die Funktion einer App zuzugreifen, also halten Sie es einfach.

Beispiele für Scheiben

Ähnlich wie bei App Action müssen Slices in deklariert werden shortcuts.xml Google bietet eine große Menge vordefinierter Aktionen / Funktionen an, überprüfen Sie meine Vorheriger Artikel.

Sie können einen untergeordneten Knoten innerhalb der Optionen hinzufügen slice und bieten a url-template Diese Vorlage wird zum Ausführen von Slice verwendet.

Beachten Sie, dass empfohlen wird, “Inhalt” als Schema zu verwenden.

<capability android:name="actions.intent.OPEN_APP_FEATURE">
<slice>
<url-template
android:name="content://com.example.android.app.provider/slice{?feature}" />

</slice>
</capability>

Der Slice-Provider ist für die Erstellung eines Slice-Objekts mit einem URI (URL-Vorlage oben) zuständig.

Sie sollten fortfahren SliceProvider und implementieren Sie 2 Methoden:

  • onBindSlice () benötigt Uri, und was Sie tun müssen, ist, diesen Uri Ihrem Clip zuzuordnen und Slice wiederherzustellen
  • onCreateSliceProvider (), können Sie vorläufige Aufgaben erledigen, aber etwas Einfaches, blockieren Sie den Thread nicht und geben Sie true zurück.
  • Zu guter Letzt können Sie Slice-Autorität zeigen, dies ist der einzige Name, der es dem System erlaubt, Slice auszuführen, siehe Erteilen von Berechtigungen unten.
class MySliceProvider : SliceProvider() {
companion object {
const val SLICE_AUTHORITY = "com.example.android.app.provider"
}
override fun onBindSlice(sliceUri: Uri?): Slice? {
// you can filter the sliceUri here to provide the appropriate slice
return createSlice()
}
override fun onCreateSliceProvider(): Boolean = true}

Die Anwendung muss angeben, welche Klasse für die Bereitstellung von Slices zuständig ist (SliceProvider). Dies geschieht in AndroidManifest wie unten beschrieben.

Beachte das authorities muss mit dem übereinstimmen, was Sie in Ihrem Slice (shortcut.xml) angegeben haben, sowie mit SLICE_AUTHORITY in SliceProvider. Außerdem filtert der Anbieter die Absicht der Kategorie „Slice“.

<application>
...
<provider android:name="MySliceProvider"
android:authorities="com.example.android.app.provider"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.app.slice.category.SLICE" />
</intent-filter>
</provider>

Wie bereits erwähnt, benötigt Google Assistant eine Genehmigung

private fun grantAssistantPermissions() {
getAssistantPackage()?.let { assistantPackage ->
val sliceProviderUri = Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority(MySliceProvider.SLICE_AUTHORITY)
.build()

SliceManager.getInstance(this).grantSlicePermission(assistantPackage, sliceProviderUri)
}
}

Durch die Verwendung der bereitgestellten Bausteine ​​(Liste, Kopfzeile, Zeile…). DSL-BeckenSie können schnell Slices erstellen.

// SliceProvider
fun createSlice() {
return list(...) {
header {
title = "My title"
subtitle = "Subtitle"
// Defines the primary action when slice is clicked
primaryAction = SliceAction.create(...)
}
row { ... }
}
}

SliceViewer ist ein Google-Tool, mit dem Sie Slices anzeigen können. Sie können es unten herunterladen und auf Ihr Testgerät oder Ihren Emulator hochladen.

adb install -r -t slice-viewer.apk

Sie können jetzt den folgenden Befehl ausführen, um SliceViewer auszuführen. Achten Sie auf das Schlüsselwort slice hat ein Inhaltspräfix.

adb shell am start -a android.intent.action.VIEW -d 
slice-content://com.example.android.app.provider/slice
ein Beispiel für einen Slice-Viewer

Wir sind mit diesem Teil fertig. Wir haben gelernt, wie man Clips in der App registriert und Google Now zur Verfügung stellt.

Im nächsten Artikel erfahren Sie, wie Sie die Erfahrung noch umfassender gestalten und die Kontrolle über die Anwendung von einem Teil ohne Start kaufen können.

Vollständige Implementierung, Beispiel:

https://github.com/sonique6784/SQLCipherPerformance/commit/1dceced26f07250b41c080ad6e121704eae86ba7