App-Aktionen für Autos

Dank der Sprachsteuerung können Fahrer Aufgaben erledigen, ohne die Hände vom Lenkrad zu nehmen oder den Blick von der Straße abwenden zu müssen. Mit App Actions für Auto-Apps können Fahrer Google Assistant verwenden, um Android-Apps in ihrem Infotainmentsystem zu steuern, indem sie zum Beispiel „Hey Google, finde einen Parkplatz in der Beispiel-App“ sagen.

App-Aktionen funktionieren mit POI-Auto-Apps. In diesem Leitfaden werden die spezifischen Anforderungen und Einschränkungen für die Integration von App-Aktionen in Ihre POI-App beschrieben.

So funktionierts

Mit App Actions werden Ihre In-App-Funktionen auf Assistant erweitert, sodass Nutzer per Sprachbefehl auf App-Funktionen zugreifen können. Wenn ein Nutzer eine App-Aktion aufruft, ordnet Assistant die Abfrage einem integrierten Intent (BII) zu, der in der Ressource shortcuts.xml Ihrer App deklariert ist, und startet Ihre App auf dem angeforderten Bildschirm.

Sie deklarieren die Unterstützung für BIIs in Ihrer App mit Android-capability-Elementen. Wenn du deine App über die Google Play Console hochlädst, registriert Google die in der App deklarierten Funktionen und stellt sie Nutzern für den Zugriff über Assistant zur Verfügung.

Diagramm, das die Auftragserfüllung zeigt.

  1. Ein Nutzer löst Assistant aus und sendet eine Sprachnachricht für eine bestimmte App.
  2. Assistant gleicht die Anfrage mit einem vortrainierten Modell (BII) ab und extrahiert alle von BII unterstützten Parameter.
  3. In diesem Beispiel ordnet Assistant die Abfrage der GET_CHARGING_STATION-BII zu, extrahiert den Standortparameter „SFO“ und übersetzt den Standort in seine Geokoordinaten.
  4. Die App wird über ihre Auftragsausführungsdefinition für diese BII ausgelöst.
  5. Die App verarbeitet die Auftragsausführung und zeigt Ladestationen im Infotainmentsystem des Fahrers an.

Einschränkungen

Für Autoimplementierungen von App-Aktionen gelten die folgenden Einschränkungen:

Voraussetzungen

So bereiten Sie Ihre Auto-App für App-Aktionen vor:

  • die allgemeinen Anforderungen an Android-Apps für App Actions erfüllen.
  • Fügen Sie die Abhängigkeit der Auto-App-Bibliothek hinzu. Weitere Informationen finden Sie unter Abhängigkeiten deklarieren.

Absicht und Auftragsausführung bestimmen

Wenn du eine Auto-App mit App Actions per Sprachbefehl aktivieren möchtest, musst du zuerst ermitteln, welche Sprachbefehle oder Intents des Nutzers deine App unterstützt. Anschließend definieren Sie für jeden Intent eine Auftragsausführung, um anzugeben, wie Ihre App die Anfrage erfüllen soll.

  • Welche Intents unterstützt deine Auto-App?

    App Actions bietet vortrainierte Sprachmodelle, sogenannte integrierte Intents (BII), die die Sprachbefehle eines Nutzers verstehen und interpretieren können, wenn er „Hey Google“ sagt. Um auf Sprachanfragen zu antworten, deklarieren Sie Assistant einfach die BIIs, die Ihre App unterstützt. Wenn Sie beispielsweise möchten, dass Ihre App bei der Suche nach einem Parkplatz unterstützt wird, implementieren Sie die GET_PARKING_FACILITY-BII. Alternativ können Sie GET_CHARGING_STATION BII implementieren, um Nutzern die Suche nach Ladestationen für Elektroautos zu erleichtern.

  • Wie soll Ihre App jeden Intent erfüllen?

    Ihre App führt die Sprachanfrage aus, indem sie sich auf dem entsprechenden Bildschirm startet. App Actions stellt für die Auftragsausführung Parameter bereit, die aus der Nutzeranfrage extrahiert wurden. So können Sie Ihre Antwort an die Anforderungen des Nutzers anpassen.

App Actions einbinden

Nachdem Sie Ihre Strategie für die Auftragsausführung festgelegt haben, führen Sie die folgenden Schritte aus, um die Auto-App per Sprachbefehl zu aktivieren:

  1. Öffnen Sie Ihre Hauptaktivität AndroidManifest.xml und deklarieren Sie die Unterstützung für Android-Verknüpfungen. Mit capability-Verknüpfungselementen erklären Sie gegenüber Assistant die BIIs, die Ihre App unterstützt. Weitere Informationen finden Sie unter Funktionen hinzufügen.

     <!-- AndroidManifest.xml -->
     <meta-data
         android:name="android.app.shortcuts"
         android:resource="@xml/shortcuts" />
    
  2. Als Nächstes fügen Sie AndroidManifest.xml ein <intent-filter>-Element hinzu. Dadurch kann Assistant Deeplinks verwenden, um eine Verbindung zu den Inhalten Ihrer App herzustellen.

    • Bei Android Auto-Auftragsausführung ist das <intent-filter> mit der mobilen App identisch.

    • Bei Android Automotive OS wird Assistant durch die CarAppService-Sitzung Ihrer App ausgelöst. Damit eine Sitzung den Deeplink auslöst, geben Sie im <activity>-Element von AndroidManifest.xml ein <intent-filter> an.

    <!-- AndroidManifest.xml -->
    <activity
      ...
      android:name="androidx.car.app.activity.CarAppActivity">
      ...
      <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data
            android:scheme="YOUR_SCHEME"
            android:host="YOUR_HOST" />
      </intent-filter>
    </activity>
    
  3. Wenn Sie noch keine shortcuts.xml-Datei für das res/xml-Verzeichnis Ihrer Anwendung haben, erstellen Sie ein neues. Informationen dazu, wie Android-Tastenkombinationen in App Actions verwendet werden, findest du unter shortcuts.xml erstellen.

    Implementieren Sie in shortcuts.xml einen capability für die ausgewählte BII. Als Nächstes fügen Sie ein verschachteltes <intent> hinzu, um die Anwendungsausführung zu definieren.

    <!-- shortcuts.xml -->
    <?xml version="1.0" encoding="utf-8"?>
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    
      <capability android:name="actions.intent.GET_PARKING_FACILITY">
        <intent>
          <url-template
          android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}">
    
          <!-- Facility name, e.g. "Googleplex" -->
          <parameter
            android:name="parkingFacility.name"
            android:key="name"/>
          <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" -->
          <parameter
            android:name="parkingFacility.address"
            android:key="address"/>
          <!-- Disambiguate the type of service, e.g. "valet" -->
          <parameter
            android:name="parkingFacility.disambiguatingDescription"
            android:key="disambiguatingDescription"/>
          <!-- Latitude, e.g. "37.3861" -->
          <parameter
            android:name="parkingFacility.geo.latitude"
            android:key="latitude"/>
          <!-- Longitude, e.g. "-122.084" -->
          <parameter
            android:name="parkingFacility.geo.longitude"
            android:key="longitude"/>
        </intent>
      </capability>
    </shortcuts>
    
  4. Aktualisieren Sie zum Schluss die Session()-Logik Ihrer Auto-App, damit die eingehende Auftragsausführung durch App-Aktionen verarbeitet werden kann. Die folgenden Beispiele zeigen die Intent-Handhabung für Session.onCreateScreen() und Session.onNewIntent().

    onCreateScreen().

    Kotlin

    @Override
    fun onCreateScreen(@NonNull intent: Intent): Screen {
      if (intent.getData() != null) {
          val uri: Uri = intent.getData()
          // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
          // Build your Templates with parsed uri parameters
      ...
     }
    }
    

    Java

    @Override
    public Screen onCreateScreen(@NonNull Intent intent) {
    if (intent.getData() != null) {
      Uri uri = intent.getData();
      // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
      // Build your Templates with parsed uri parameters
    ...
    }
    }
    

    onNewIntent()

    Kotlin

    @Override
    fun onNewIntent(@NonNull intent: Intent): Screen {
      if (intent.getData() != null) {
          val uri: Uri = intent.getData()
          // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
          // Build your Templates with parsed uri parameters
          ...
      }
    }
    

    Java

    @Override
    public void onNewIntent(@NonNull Intent intent) {
    if (intent.getData() != null) {
     Uri uri = intent.getData();
     // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
     // Build your Templates with parsed uri parameters
     ...
    }
    }
    

App als Vorschau ansehen, testen und veröffentlichen

App Actions bietet Tools zum Ansehen und Testen Ihrer App. Informationen zu diesen Tools und Details zur Veröffentlichung Ihrer sprachgesteuerten Auto-App im Play Store finden Sie in der Übersicht zu App Actions.