Optymalizacja treści kontekstowych dla Asystenta

Android 6.0 Marshmallow wprowadza nowy sposób korzystania z aplikacji przy pomocy Asystenta takich jak Google . Asystent to okno najwyższego poziomu, które użytkownicy mogą wyświetlić, aby uzyskać kontekst odpowiednie działania w odniesieniu do bieżącej aktywności. Te działania mogą obejmować precyzyjne linki do innych aplikacji na urządzenia.

Użytkownicy aktywują asystenta przez przytrzymanie przycisku ekranu głównego lub wypowiedzenie frazy kluczowej. W odpowiedzi system otwiera okno najwyższego poziomu, które wyświetla kontekst odpowiednich działań.

Aplikacja asystująca, np. Asystent Google, implementuje okno nakładki Asystenta za pomocą o nazwie Now on Tap, która działa z funkcjami Androida na poziomie platformy. System pozwala użytkownikowi wybrać aplikację asystującą, która uzyskuje z aplikacji informacje kontekstowe za pomocą Interfejs Assist API Androida.

Z tego przewodnika dowiesz się, jak aplikacje na Androida korzystają z interfejsu API Asystenta, aby poprawić wrażenia użytkowników. Aby dowiedzieć się, jak utworzyć aplikację do multimediów, która umożliwi Asystentowi uruchamianie i kontrolę znajdziesz w artykule na temat aplikacji Asystent Google i aplikacje do multimediów.

Korzystanie z Asystenta

Rysunek 1 przedstawia typową interakcję użytkownika z asystentem. Gdy użytkownik naciśnie i przytrzyma przycisk Home, wywołania zwrotne Assist API są wywoływane. w aplikacji source (krok 1). Asystent renderuje okno nakładki (kroki 2 i 3), a potem wybiera działanie, które ma wykonać. Asystent wykonuje wybrane działanie, np. uruchomienie intencji z precyzyjnym linkiem do (docelowej) aplikacji restauracyjnej (krok 4).

Rysunek 1. Przykład interakcji z Asystentem z funkcją Now on Tap na aplikacja Google

Użytkownicy mogą skonfigurować asystenta, wybierając Ustawienia > Aplikacje > Aplikacje domyślne > Pomoc i głosowe wprowadzanie tekstu. Użytkownicy mogą zmieniać opcje systemu, takie jak dostęp wyświetlać zawartość ekranu w formie tekstu i otwierać zrzut ekranu, jak pokazano na Rys. 2.

Rysunek 2. Pomóż i ustawienia rozpoznawania mowy

Aplikacja źródłowa

Aby mieć pewność, że aplikacja będzie działać z Asystentem jako źródłem informacji dla użytkownika: potrzebujesz tylko ułatwień dostępu „najlepsze” . W tej sekcji znajdziesz informacje o tym, jak udostępniać dodatkowe informacje, które pomogą poprawić wrażenia użytkowników asystenta, oraz o scenariuszach wymagających specjalnego postępowania, takich jak widoki niestandardowe.

Udostępnianie dodatkowych informacji asystentowi

Oprócz tekstu i zrzutu ekranu aplikacja może udostępniać z pomocą Asystenta. Na przykład Twoja muzyka Aplikacja może przekazać informacje o obecnym albumie, tak by Asystent mógł sugerowanie bardziej inteligentnych działań dostosowanych do bieżącej aktywności. Pamiętaj, że interfejsy Assist API nie zapewniają elementów sterujących multimediami. Aby dodać opcje sterowania multimediami, zobacz Asystent Google i aplikacje do multimediów.

Aby przekazać dodatkowe informacje asystentowi, aplikacja udostępnia: globalnego kontekstu aplikacji, rejestrując detektor aplikacji, dostarcza informacje związane z aktywnością za pomocą wywołań zwrotnych aktywności, jak pokazano tutaj: Rysunek 3.

Rysunek 3. Diagram sekwencji cyklu życia wspomagającego interfejs API

Aby zapewnić globalny kontekst aplikacji, aplikacja tworzy implementację Application.OnProvideAssistDataListener i rejestruje go za pomocą: registerOnProvideAssistDataListener(). Aby podać informacje kontekstowe związane z konkretnym działaniem, zastępuje onProvideAssistData() i onProvideAssistContent(). Dwie metody działania są wywoływane po opcjonalnej globalnej wywołanie zwrotne. Ponieważ wywołania zwrotne są wykonywane w wątku głównym, powinny natychmiast. Wywołania zwrotne są wywoływane tylko wtedy, gdy działanie jest uruchomione.

Dostarczanie kontekstu

Gdy użytkownik aktywuje asystenta, Funkcja onProvideAssistData() jest wywoływana, aby utworzyć pełne ACTION_ASSIST Zamiar z całym kontekstem bieżąca aplikacja reprezentowana jako instancja instancji AssistStructure. Możesz zastąpić tę metodę, aby umieścić które chcesz dodać do pakietu. EXTRA_ASSIST_CONTEXT należy do intencji wspomagającej.

Opisywanie treści

Aplikacja może implementować onProvideAssistContent(), aby poprawić wrażenia użytkownika asystenta, podając odniesienia do treści związanych z bieżącą aktywnością. Zawartość aplikacji możesz opisać za pomocą typowy słownik zdefiniowany przez Schema.org za pomocą obiektu JSON-LD. W przykładzie poniżej aplikacja muzyczna zapewnia uporządkowane dane opisujące album muzyczny, którego obecnie używa użytkownik wyświetlanie:

Kotlin

override fun onProvideAssistContent(assistContent: AssistContent) {
    super.onProvideAssistContent(assistContent)

    val structuredJson: String = JSONObject()
            .put("@type", "MusicRecording")
            .put("@id", "https://example.com/music/recording")
            .put("name", "Album Title")
            .toString()

    assistContent.structuredData = structuredJson
}

Java

@Override
public void onProvideAssistContent(AssistContent assistContent) {
  super.onProvideAssistContent(assistContent);

  String structuredJson = new JSONObject()
       .put("@type", "MusicRecording")
       .put("@id", "https://example.com/music/recording")
       .put("name", "Album Title")
       .toString();

  assistContent.setStructuredData(structuredJson);
}

Możesz też poprawić wrażenia użytkowników za pomocą niestandardowych implementacji onProvideAssistContent(), co może zapewnić:

Uwaga: aplikacje, które korzystają z niestandardowej implementacji wyboru tekstu, prawdopodobnie muszą zaimplementować metodę onProvideAssistContent() i wywoływać metodę setClipData().

Implementacja domyślna

Jeśli nie zostanie zaimplementowany ani onProvideAssistData(), ani onProvideAssistContent(), system nadal będzie działać i przekazywać automatycznie zebrane informacje do asystenta, chyba że bieżące okno zostanie oznaczone jako bezpieczne. Jak widać na Rysunku 3, system używa domyślnych implementacji interfejsów onProvideStructure() i onProvideVirtualStructure() do zbierać tekst i wyświetlać informacje o hierarchii. Jeśli w widoku zaimplementowano niestandardowy rysunek tekstowy, zastąp onProvideStructure(), aby podać asystentowi z tekstem wyświetlanym użytkownikowi przez wywołanie metody setText(CharSequence).

W większości przypadków wdrożenie ułatwień dostępu w celu uzyskania potrzebnych informacji. Aby wdrożyć obsługę ułatwień dostępu, przestrzegać sprawdzonych metod opisanych w artykule Tworzenie aplikacji ułatwienia dostępu, czyli:

Wykluczanie wyświetleń z urządzeń z Asystentem

Aby obsługiwać informacje poufne, aplikacja może wykluczyć z asystenta bieżący widok ustawiając parametr układu FLAG_SECURE dla WindowManager. Musisz ustawić wartość FLAG_SECURE bezpośrednio dla w każdym oknie utworzonym w ramach aktywności, w tym także z oknami. Aplikacja może też używać tych funkcji: setSecure() do wykluczenia z poziomu Asystenta. Brak globalny (na poziomie aplikacji), aby wykluczyć wszystkie wyświetlenia z Asystenta. Notatka że FLAG_SECURE nie powoduje zatrzymania wywołań interfejsu Assist API. . Działanie używające pola FLAG_SECURE może nadal bezpośrednio podać informacje aplikacji Asystenta za pomocą wywołań zwrotnych opisanych wcześniej w tym przewodniku.

Uwaga: w przypadku kont służbowych (Android for Work): administrator może wyłączyć zbieranie danych Asystenta na potrzeby profilu służbowego przy użyciu metody setScreenCaptureDisabled() interfejsu DevicePolicyManager API.

Interakcje głosowe

Wywołania zwrotne interfejsu API wspomagania są również wywoływane podczas kluczowe wyrażenie . Więcej informacji: Głos Actions.

Uwagi dotyczące kolejności nakładania

Asystent używa lekkiego okna nakładanego wyświetlanego nad bieżącej aktywności. Można je aktywować w każdej chwili, nie twórz na stałe alertów systemowych, które zakłócają działanie okna nakładki, Rysunek 4.

Rysunek 4. Kolejność warstw (Z) warstwy wspomagającej

Jeśli Twoja aplikacja używa z alertami systemowymi, należy je niezwłocznie usuwać, ponieważ pogarsza komfort obsługi.

Aplikacja docelowa

Aplikacje Asystenta zwykle korzystają z precyzyjnych linków, aby znajdować aplikacje docelowe. Aby ustawić może być potencjalną aplikacją docelową, rozważ dodanie obsługi precyzyjnych linków. Pasujące wyniki między bieżącym kontekstem użytkownika a precyzyjnymi linkami lub innymi potencjalnymi działaniami wyświetlanymi okno nakładki (widoczne w kroku 3 na Rys. 1) jest związane z implementacją Asystenta Google. Na przykład aplikacja Asystent Google korzysta z precyzyjnych linków i usługi App Links, aby kierować użytkowników do aplikacji docelowych.

Wdrażanie własnego Asystenta

Możesz zaimplementować własnego asystenta. Jak widać na rys. 2, użytkownik może wybrać aktywną aplikację asystenta. Aplikacja asystenta musi zapewniać implementację VoiceInteractionSessionServiceVoiceInteractionSession, jak pokazano na VoiceInteraction. Wymaga też uprawnień BIND_VOICE_INTERACTION. Asystent może wtedy otrzyma hierarchię widoków i tekstu reprezentowaną jako wystąpienie AssistStructure w onHandleAssist(). Zrzut ekranu otrzymuje za pomocą usługi onHandleScreenshot().