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).
![](https://developer.android.com/static/images/training/assistant/image01.png?authuser=9&hl=pl)
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.
![](https://developer.android.com/static/images/training/assistant/image02.png?authuser=9&hl=pl)
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.
![](https://developer.android.com/static/images/training/assistant/image03.png?authuser=9&hl=pl)
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ć:
- Dostosowuje przesłane treści zamiar, aby lepiej odzwierciedlają kontekst działania na najwyższym poziomie.
- Podaje identyfikator URI wyświetlanych treści.
- Uzupełnia
setClipData()
o dodatkowe interesującej treści, którą aktualnie przegląda użytkownik.
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:
- Podaj atrybuty
android:contentDescription
. - W przypadku widoków niestandardowych wypełnij pole
AccessibilityNodeInfo
. - Marka
sprawdź, czy niestandardowe obiekty
ViewGroup
udostępniać swoje dzieci.
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.
![](https://developer.android.com/static/images/training/assistant/image04.png?authuser=9&hl=pl)
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()
.