Konfiguracja wyszukiwania

Wdrożenie wyszukiwarki z pomocą systemu Android – czyli przekazywanie zapytań do aktywności i dostarczania sugestii wyszukiwania – aplikacja musi udostępniać wyszukiwanie w postaci pliku XML.

Na tej stronie opisujemy plik konfiguracji wyszukiwania pod względem jego składni i zastosowania. Więcej na temat wdrażania funkcji wyszukiwania w aplikacji można znaleźć w Utwórz interfejs wyszukiwania.

lokalizacja pliku:

res/xml/filename.xml(
) Android używa nazwy pliku jako identyfikatora zasobu.
składnia:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="string resource"
    android:hint="string resource"
    android:searchMode=["queryRewriteFromData" | "queryRewriteFromText"]
    android:searchButtonText="string resource"
    android:inputType="inputType"
    android:imeOptions="imeOptions"
    android:searchSuggestAuthority="string"
    android:searchSuggestPath="string"
    android:searchSuggestSelection="string"
    android:searchSuggestIntentAction="string"
    android:searchSuggestIntentData="string"
    android:searchSuggestThreshold="int"
    android:includeInGlobalSearch=["true" | "false"]
    android:searchSettingsDescription="string resource"
    android:queryAfterZeroResults=["true" | "false"]
    android:voiceSearchMode=["showVoiceSearchButton" | "launchWebSearch" | "launchRecognizer"]
    android:voiceLanguageModel=["free-form" | "web_search"]
    android:voicePromptText="string resource"
    android:voiceLanguage="string"
    android:voiceMaxResults="int"
    >
    <actionkey
        android:keycode="KEYCODE"
        android:queryActionMsg="string"
        android:suggestActionMsg="string"
        android:suggestActionMsgColumn="string" />
</searchable>
elementy:
<searchable>
Określa wszystkie konfiguracje wyszukiwania używane przez system Android do obsługi wyszukiwania wspomaganego.

Atrybuty:

android:label
Zasób ciągu znaków. (Wymagane). Nazwa aplikacji. Musi być taka sama jak nazwa zastosowana do atrybutu android:label Twojego pliku <activity>. lub <application> manifestu. Ta etykieta jest widoczna dla użytkownika tylko wtedy, gdy ustawisz Od android:includeInGlobalSearch do "true" – w takim przypadku używana jest etykieta w ustawieniach wyszukiwania systemu, aby zidentyfikować aplikację jako element, który można wyszukać.
android:hint
Zasób ciągu znaków. Jest to zalecane. Tekst do wyświetlenia w polu tekstowym wyszukiwania, gdy nie wpisano tekstu. Zawiera ona wskazówkę dla użytkownika na temat tego, jakie treści można wyszukać. Dla spójności z innymi aplikacjami na Androida, sformatuj ciąg tekstowy android:hint jako „Szukaj <content-or-product>”. Na przykład „Szukaj utworów i wykonawców”. lub „Szukaj w YouTube”.
android:searchMode
Słowo kluczowe. Ustawia dodatkowe tryby sterujące odtwarzaniem prezentacji. Dostępny(-a) tryby określają sposób przepisywania tekstu zapytania, gdy otrzymana sugestia niestandardowa ostrość. Akceptowane są te wartości trybu:
WartośćOpis
"queryRewriteFromData" Użyj wartości z SUGGEST_COLUMN_INTENT_DATA na przeredagowanie tekstu zapytania. Tej opcji należy używać tylko wtedy, gdy wartości w argumencie SUGGEST_COLUMN_INTENT_DATA nadają się do sprawdzania i edytowania przez użytkowników, takich jak identyfikatory URI HTTP.
"queryRewriteFromText" Użyj wartości z atrybutu SUGGEST_COLUMN_TEXT_1 w celu zmiany tekstu zapytania.

Więcej informacji znajdziesz w dokumentacji na temat przepisywania tekstu zapytania w Dodawanie niestandardowych sugestii wyszukiwania.

android:searchButtonText
Zasób ciągu znaków. Tekst do wyświetlenia na przycisku uruchamiającym wyszukiwanie. Według domyślnie, na przycisku wyświetla się ikona wyszukiwania (lupa), która jest idealna internacjonalizacji. Nie używaj więc tego atrybutu do zmiany przycisku, chyba że zachowanie czegoś innego niż wyszukiwanie, np. żądania adresu URL w przeglądarce.
android:inputType
Słowo kluczowe. Określa typ używanej metody wprowadzania, na przykład rodzaj łagodnego dźwięku klawiatury. W przypadku większości wyszukiwań, w których dozwolony jest tekst swobodny, nie potrzebujesz tego atrybutu. Listę tych kategorii znajdziesz na stronie inputType odpowiednie wartości tego atrybutu.
android:imeOptions
Słowo kluczowe. Udostępnia dodatkowe opcje metody wprowadzania. W przypadku większości wyszukiwań: który tekst swobodny jest oczekiwany, nie potrzebujesz tego atrybutu. Domyślny edytor IME to actionSearch z „wyszukiwaniem” zamiast znaku przejścia do nowej linii w klawiatura programowa. Zobacz imeOptions , gdzie znajdziesz listę odpowiednich wartości dla tego atrybutu.

Atrybuty sugestii wyszukiwania

Jeśli zdefiniujesz dostawcę treści, aby generować sugestie wyszukiwania, musisz zdefiniować atrybutów dodatkowych, które konfigurują komunikację z dostawcą treści. Podczas udostępniania wyszukiwania sugestie, potrzebujesz niektórych z tych atrybutów <searchable>:


android:searchSuggestAuthority
Ciąg znaków. (Wymagane do wyświetlania sugestii wyszukiwania). Ta wartość musi pasować do ciąg urzędowy podany w android:authorities w elemencie <provider> manifestu Androida.
android:searchSuggestPath
Ciąg znaków. Ta ścieżka jest używana jako część sugestii zapytanie Uri, po prefiksie i a przed standardową ścieżką sugestii. Jest to wymagane tylko wtedy, gdy masz udostępniającego różne typy sugestii dostawcy treści, np. dla różnych typów danych. Potrzebny jest też sposób na rozróżnianie sugestii zapytań, które otrzymujesz, .
android:searchSuggestSelection
Ciąg znaków. Ta wartość jest przekazywana do jako parametru selection. Zwykle jest to klauzula WHERE dla bazy danych i musi zawierać pojedynczy znak zapytania działający jako obiekt zastępczy rzeczywisty ciąg zapytania wpisany przez użytkownika, np. "query=?". Pamiętaj jednak: możesz też użyć dowolnej wartości niepustej, aby wyzwolić dostarczenie tekstu zapytania za pomocą funkcji selectionArgs, a potem zignoruj parametr selection).
android:searchSuggestIntentAction
Ciąg znaków. Domyślne działanie dotyczące intencji, które zostanie zastosowane, gdy użytkownik kliknie niestandardową sugestię wyszukiwania, np. "android.intent.action.VIEW". Jeśli ta wartość nie zostanie zastąpiona przez wybraną sugestię za pomocą parametru SUGGEST_COLUMN_INTENT_ACTION kolumny, wartość jest umieszczana w polu działania sekcji Intent, gdy użytkownik kliknie reklamę jako sugestię.
android:searchSuggestIntentData
Ciąg znaków. Domyślne dane o zamiarach używane, gdy użytkownik klika niestandardową sugestię wyszukiwania. Jeśli nie zostanie zastąpiona przez wybraną sugestię, za pomocą SUGGEST_COLUMN_INTENT_DATA kolumny – ta wartość jest umieszczana w polu danych funkcji Intent, gdy użytkownik kliknie reklamę jako sugestię.
android:searchSuggestThreshold
Liczba całkowita. Minimalna liczba znaków wymagana do powoduje wyszukanie sugestii. Gwarantuje to tylko, że system nie wyśle zapytania dostawcy treści w przypadku czegoś krótszego niż wartość progowa. Wartością domyślną jest 0.

Więcej informacji o powyższych atrybutach sugestii wyszukiwania znajdziesz w dokumentacji dotyczące dodawania niestandardowych sugestii wyszukiwania oraz dodawania niestandardowych sugestii.

Atrybuty okna szybkiego wyszukiwania

Aby spersonalizowane sugestie wyszukiwania były dostępne w oknie szybkiego wyszukiwania, musisz mieć pewne te atrybuty <searchable>:


android:includeInGlobalSearch
Wartość logiczna. (Wymagane, aby wyświetlać sugestie wyszukiwania w sekcji Okno szybkiego wyszukiwania). Ustaw na "true", aby otrzymywać sugestie dostępne na całym świecie w Oknie szybkiego wyszukiwania. Użytkownik musi: włącz w ustawieniach wyszukiwania w systemie Twoją aplikację jako element do przeszukiwania sugestie są wyświetlane w oknie szybkiego wyszukiwania.
android:searchSettingsDescription
Zasób ciągu znaków. Krótki opis sugestii wyszukiwania, które podany w oknie szybkiego wyszukiwania, który jest wyświetlany w aplikacji. Opis musi zwięźle opisywać treści dostępne dla wyszukiwarki. Dla: na przykład „Wykonawcy, albumy i utwory”. w przypadku aplikacji muzycznej lub „Zapisane notatki”. dla za pomocą notatnika.
android:queryAfterZeroResults
Wartość logiczna. Ustaw jako "true", jeśli chcesz, by Twoim dostawcą treści był dla nadzbiorów zapytań, które wcześniej nie zwróciły żadnych wyników. Na przykład, jeśli dostawca treści nie zwraca żadnych wyników dla słowa „bo”, trzeba powtórzyć zapytanie dla słowa „jan”. Jeśli ma wartość "false", superzbiory są ignorowane podczas jednej sesji – „bob” nie wywołuje ponownego zapytania. Ta informacja jest ważna tylko w okresie ważności okna wyszukiwania lub aktywność podczas korzystania z widżetu wyszukiwania. Po ponownym otwarciu okna wyszukiwania lub aktywności „bo” ponownie wysyła zapytanie do dostawcy treści. Wartość domyślna to false (fałsz).

Atrybuty wyszukiwania głosowego

Aby włączyć wyszukiwanie głosowe, musisz mieć te atrybuty <searchable>:


android:voiceSearchMode
Słowo kluczowe. (Wymagane do udostępniania funkcji wyszukiwania głosowego). Włącza wyszukiwanie głosowe z określonym trybem wyszukiwania głosowego. Wyszukiwanie głosowe może nie być dostępne na urządzeniu. W takim przypadku te oznaczenia nie mają żadnego skutku. Akceptowane są te wartości trybu:
WartośćOpis
"showVoiceSearchButton" Wyświetl przycisk wyszukiwania głosowego, jeśli na urządzeniu jest dostępne wyszukiwanie głosowe. Jeśli jest ustawiony, musisz też ustawić wartość "launchWebSearch" lub "launchRecognizer", oddzielając je pionową kreską (|).
"launchWebSearch" Przycisk wyszukiwania głosowego przenosi użytkownika bezpośrednio z wbudowaną aktywnością związaną z wyszukiwaniem głosowym. Większość aplikacji nie używa tej flagi, ponieważ powoduje to odejście użytkownika od aktywności, która wywołała wyszukiwanie.
"launchRecognizer" Przycisk wyszukiwania głosowego bezpośrednio do wbudowanej funkcji nagrywania głosu. Ta aktywność zachęca użytkownika do mówienia, tworzy transkrypcję wypowiedzianego tekstu i przekazuje dalej wygenerowany tekst do wyszukiwanego hasła, tak jakby użytkownik wpisał go w polu i kliknąłem przycisk wyszukiwania.
android:voiceLanguageModel
Słowo kluczowe. Model językowy, musi być używany przez system rozpoznawania głosu. Akceptowane są te wartości:
WartośćOpis
"free_form" Używaj swobodnego rozpoznawania mowy do dyktowania zapytań. Jest to przede wszystkim zoptymalizowane pod kątem języka angielskiego. Jest to ustawienie domyślne.
"web_search" Używaj rozpoznawania haseł wyszukiwanych w internecie w przypadku krótszych wyrażeń przypominających wyszukiwanie. To jest dostępny w większej liczbie języków niż "free_form".

Zobacz EXTRA_LANGUAGE_MODEL, aby uzyskać więcej i informacjami o nich.

android:voicePromptText
Zasób ciągu znaków. Dodatkowa wiadomość do wyświetlenia w oknie wprowadzania głosowego.
android:voiceLanguage
Ciąg znaków. Oczekiwany język mówiony, wyrażony jako wartość ciągu znaków stałą w Locale, np. "de" w przypadku niemieckiego lub "fr" w przypadku francuskiego. To pole jest potrzebne tylko wtedy, gdy jest inne od bieżącej wartości wynoszącej Locale.getDefault().
android:voiceMaxResults
Liczba całkowita. Ustaw maksymalną liczbę wyników do zwrócenia, razem ze słowem „najlepszy”, który jest zawsze podawany jako ACTION_SEARCH podstawowego zapytania intencji. Wartość musi wynosić co najmniej 1. Używaj EXTRA_RESULTS aby uzyskać wyniki intencji. Jeśli nie zostanie podana, moduł rozpoznawania wybierze liczbę wyników do zwrócenia.
<actionkey>
Definiowanie klucza urządzenia i zachowania działania związanego z wyszukiwaniem. Działanie wyszukiwania powoduje utworzenie specjalnego zachowanie po kliknięciu przycisku na urządzeniu, na podstawie bieżącego zapytania lub sugestii. Na przykład aplikacja Kontakty udostępnia działanie wyszukiwania w celu uruchomienia telefonu połączenie z aktualnie wybraną sugestię kontaktu po kliknięciu przycisku ZADZWOŃ.

Nie wszystkie klawisze działań są dostępne na każdym urządzeniu i nie wszystkie klawisze można zastąpić w tym sposób. Przykład: „Dom” klucza nie można zastąpić i musi on zawsze wrócić na ekran główny ekranu. Pamiętaj też, aby nie zdefiniować klawisza działania dla klawisza potrzebnego do wpisywania wyszukiwanego hasła zapytania. Ogranicza to liczbę dostępnych i uzasadnionych klawiszy poleceń do przycisku połączenia i menu połączenia. Przycisk

Aby zdefiniować klucz, należy zdefiniować android:keycode oraz co najmniej jeden 3 pozostałe atrybuty definiujące działanie związane z wyszukiwaniem.

Atrybuty:

android:keycode
Ciąg znaków. (Wymagane). Kod klucza z KeyEvent, który odpowiada klawisz działania, na który chcesz odpowiedzieć, na przykład "KEYCODE_CALL". Ten jest dodawane do ACTION_SEARCH , która jest przekazywana do możliwej do wyszukiwania aktywności. Aby sprawdzić kod klucza, użyj getIntExtra(SearchManager.ACTION_KEY) Nie wszystkie klawisze działają w przypadku wyszukiwania, bo wiele z nich służy do pisania, nawigacji czy funkcji systemowych.
android:queryActionMsg
Ciąg znaków. Komunikat wyświetlany po naciśnięciu klawisza polecenia użytkownik wpisuje tekst zapytania. Jest ona dodawana do ACTION_SEARCH które system przekazuje do aktywności, którą można przeszukiwać. Aby sprawdzić ciąg znaków, użyj funkcji getStringExtra(SearchManager.ACTION_MSG)
android:suggestActionMsg
Ciąg znaków. Komunikat o działaniu, który zostanie wysłany po naciśnięciu klawisza polecenia sugestia jest widoczna. Jest on dodawany do intencji, którą system przekazuje do aktywność, którą można przeszukiwać – za pomocą działania zdefiniowanego dla danej sugestii. Aby przeanalizować ciągu znaków, należy użyć funkcji getStringExtra(SearchManager.ACTION_MSG) Tej opcji należy użyć tylko wtedy, gdy wszystkie sugestie obsługują ten klawisz działania. Jeśli nie wszystkie sugestie mogą obsługiwać ten sam klawisz działania, musisz zamiast tego użyć android:suggestActionMsgColumn.
android:suggestActionMsgColumn
Ciąg znaków. Nazwa kolumny u dostawcy treści, która określa komunikat o działaniu dla tego klawisza działania, który zostanie wysłany, gdy użytkownik naciśnie klawisz działania a sugestia jest widoczna. Ten atrybut umożliwia kontrolowanie klawisza działania w nową sugestię, ponieważ zamiast korzystać z Atrybut android:suggestActionMsg określający komunikat o działaniu dla wszystkich sugestie, każdy wpis w systemie dostawcy treści zawiera odrębny komunikat o działaniu.

Najpierw musisz zdefiniować kolumnę w usłudze dostawcy treści dla każdej sugestii komunikat o działaniu, a następnie podaj nazwę tej kolumny w tym atrybucie. System sprawdza kursor sugestii, używając podanego tutaj ciągu znaków, aby wybrać działanie w kolumnie wiadomości, a następnie zaznacza kursorem ten ciąg wiadomości. Ten ciąg to który jest dodawany do intencji przekazywanej przez system do aktywności możliwej do wyszukania, za pomocą działania dla sugestii. Aby sprawdzić ciąg znaków, użyj funkcji getStringExtra(SearchManager.ACTION_MSG) Jeśli dane dla wybranej sugestii nie istnieją, klawisz działania jest ignorowany.

przykład:
Plik XML zapisany o res/xml/searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="dictionary"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:includeInGlobalSearch="true"
    android:searchSettingsDescription="@string/settings_description" >
</searchable>