Przekazywanie skrótów dynamicznych do Asystenta

Skróty na Androida zapewniają użytkownikom szybkie metody wykonywania działań lub uzyskiwania dostępu do treści w aplikacji. Asystent może w odpowiednich momentach proaktywnie proponować użytkownikom dynamiczne skróty na Androida, co ułatwia użytkownikom odkrywanie i odtwarzanie funkcji obsługiwanych głosowych.

Możesz na przykład nacisnąć skrót do każdej notatki utworzonej przez użytkownika w aplikacji do robienia notatek. Aby umożliwić wyświetlanie linków dynamicznych w usługach Google takich jak Asystent, dodaj do projektu bibliotekę Google Skróty Integration Jetpack. Ta biblioteka umożliwia Asystentowi przyjmowanie dynamicznych skrótów, które przekazujesz za pomocą klasy ShortcutManagerCompat, która jest otoką Jetpack dla interfejsu API ShortcutManager.

Gdy w aplikacji korzystasz z biblioteki integracji skrótów Google, dynamiczne skróty przekazywane do Google są widoczne dla użytkowników jako sugestie skrótów głosowych w aplikacji Asystent. Możesz przekazać nieograniczoną liczbę skrótów dynamicznych do Asystenta, korzystając z metody pushDynamicShortcut() w bibliotece ShortcutManagerCompat.

Konfigurowanie projektu programistycznego

Dodanie funkcji dynamicznych skrótów do aplikacji wymaga biblioteki integracji skrótów Google – biblioteki Android Jetpack. Z tej sekcji dowiesz się, jak skonfigurować projekt tak, aby zawierał tę bibliotekę.

Aby dodać tę bibliotekę Jetpack i skonfigurować projekt, wykonaj te czynności:

  1. Zaktualizuj plik gradle.properties, aby obsługiwał biblioteki Jetpack:

    gradle.properties

    android.useAndroidX=true
    # Automatically convert third-party libraries to use AndroidX
    android.enableJetifier=true
    
  2. Dodaj zależności biblioteki Jetpack do build.gradle:

    app/build.gradle

    dependencies {
     implementation "androidx.core:core:1.6.0"
     implementation "androidx.core:core-google-shortcuts:1.0.1"
     ...
    }
    

    W poprzednim przykładowym kodzie wymieniono 2 biblioteki Jetpack jako zależności. Biblioteka androidx.core:core:1.6.0 zawiera klasę ShortcutManagerCompat, której używasz do przekazywania skrótów dynamicznych do Google.

    androidx.core:core-google-shortcuts:1.0.1 to biblioteka integracji skrótów Google. Ta biblioteka nie zawiera interfejsu API dla programistów. Dodając je jako zależność, umożliwiasz Asystentowi korzystanie z dynamicznych skrótów, które przekazujesz za pomocą klasy ShortcutManagerCompat.

Skróty dynamiczne push

Aby przekazywać skróty dynamiczne, które mogą się wyświetlać w Asystencie, najpierw utwórz skrót za pomocą klasy ShortcutInfoCompat.Builder().

Następnie wypchniesz skrót za pomocą metody ShortcutManagerCompat.pushDynamicShortcut(). Skróty są przekazywane, gdy użytkownik wykona odpowiednie działanie w aplikacji. Ten przykładowy kod powoduje naciśnięcie skrótu za każdym razem, gdy użytkownik złoży zamówienie w aplikacji umożliwiającej zamawianie jedzenia:

ExampleOrderActivity

Kotlin

// Define the dynamic shortcut for a menu item
var intent = Intent(context, DisplayOrderActivity::class.java)
intent.action = Intent.ACTION_VIEW
var shortcutInfo = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
        "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino")
    )
    .setIntent(intent) // Push the shortcut
    .build()

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo)

Java

// Define the dynamic shortcut for a menu item
Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat.Builder shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
      "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino"))
    .setIntent(intent)
    .build();

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Element id, do którego odwołuje się metoda ShortcutInfoCompat.Builder w poprzednim przykładowym kodzie, definiuje shortcutId wynikowego obiektu skrótu. Ten element id musi być unikalnym literałem ciągu znaków. Szczegółowe informacje znajdziesz w dokumentacji skrótów na Androidzie.

W poprzednim przykładzie metoda addCapabilityBinding wiąże skrót dynamiczny z elementem capability o takim samym atrybucie android:name określonym w tagu shortcuts.xml. Ta metoda umożliwia powiązanie skrótu z semantycznym parametrem intencji wbudowanej (BII).

Czasami skróty dynamiczne są przekazywane bez żadnego konkretnego powiązania parametru BII. Po wywołaniu przez użytkownika Asystent wywołuje określony w skrótie skrót intent, aby wykonać działanie. Ten przykład przedstawia skrót dynamiczny bez powiązania parametrów:

Kotlin

var intent: Intent = Intent(context, DisplayOrderActivity::class.java)
intent.setPackage(this, "com.sample.app")
intent.setAction(Intent.ACTION_VIEW)

var shortcutInfo: ShortcutInfoCompat = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Order coffee")
    .setLongLabel("Order a cup of coffee")
    .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
    .setIntent(intent)
    .build()

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Java

Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setPackage(this, "com.sample.app");
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
  .setShortLabel("Order coffee")
  .setLongLabel("Order a cup of coffee")
  .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
  .setIntent(intent)
  .build();

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Testowanie skrótów dynamicznych za pomocą Asystenta

Gdy Asystent Google pobierze skrót dynamiczny z aplikacji, skrót może pojawić się jako sugestia skrótu głosowego w aplikacji Asystent na Androida. Aplikacja Asystent podpowiada najnowsze skróty przekazane przez Twoją aplikację.

Aby przetestować skróty dynamiczne za pomocą Asystenta, wykonaj te czynności:

  1. Utwórz podgląd akcji w aplikacji i przygotuj urządzenie testowe lub emulator do działań testowych, postępując zgodnie z tymi samymi wymaganiami dotyczącymi konfiguracji, co w przypadku wtyczki Asystenta Google.
  2. Otwórz aplikację i określ dynamiczny skrót do push. Następnie wykonaj działanie. Jeśli na przykład naciśniesz skrót za każdym razem, gdy w aplikacji do robienia notatek zostanie utworzona notatka,
  3. Otwórz Skróty w Ustawieniach Asystenta na urządzeniu. Skrót dynamiczny pojawi się na liście aplikacji.