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.

Aby aktywować Asystenta, naciśnij i przytrzymaj przycisk ekranu głównego lub powiedz kluczowe wyrażenie. 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 wykorzystują interfejs Assist API na Androidzie, aby ulepszać Asystenta 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 > Pomóż 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. Pomoc 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 opisano, jak podać dodatkowe informacje aby pomóc w ulepszaniu obsługi Asystenta, a także w tworzeniu scenariuszy które wymagają specjalnej obsługi, np. widoków niestandardowych.

Udostępnianie dodatkowych informacji z Asystentem

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

Twoja aplikacja może implementować interfejs onProvideAssistContent() , by poprawić wrażenia użytkownika Asystenta, dostarczając odnośniki związane z treścią powiązane 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: w przypadku aplikacji korzystających z implementacji niestandardowego zaznaczenia tekstu prawdopodobnie konieczne będzie w celu zaimplementowania onProvideAssistContent() i zadzwoń pod numer setClipData().

Implementacja domyślna

Jeśli ani onProvideAssistData(), ani onProvideAssistContent() wywołanie zwrotne, system kontynuuje kontynuację i przekazuje automatycznie zbierają informacje asystentowi, chyba że bieżący jest 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ń przez asystentów

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.

Zastosowania kolejności elementów

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. Dla: na przykład aplikacja Asystent Google korzysta z precyzyjnych linków i linków aplikacji, aby: kierować ruch do aplikacji docelowych.

Wdrażanie własnego Asystenta

Możesz wdrożyć własnego asystenta. Jak to widać na rysunku 2, użytkownik może wybrać aktywną aplikację asystującą. aplikacja asystująca musi udostępniać implementację VoiceInteractionSessionService i VoiceInteractionSession, jak pokazano w VoiceInteraction i przykład. 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().