検索インターフェースを作成する

アプリに検索機能を追加する際には、 上部に表示される検索ダイアログを備えたユーザー インターフェースを実装する または検索ウィジェットを使用してレイアウトに挿入できます。 検索ダイアログとウィジェットはどちらも、ユーザーの検索クエリを アプリの特定のアクティビティを 追跡できますこうすることで、ユーザーはどのデバイスからでも 検索ダイアログまたは検索ウィジェットが利用可能な場合に 適切なアクティビティを行って検索を実行し、結果を提示します。

検索ダイアログと検索ウィジェットでは以下の機能も使用できます。

  • 音声検索
  • 最近のクエリに基づく検索候補
  • アプリデータの実際の結果と一致する検索候補

このドキュメントでは、検索インターフェースを提供するようにアプリを設定する方法について説明します 検索クエリを配信するために、Android システムが支援する 直接移動することもできます。

関連資料:

基本情報

始める前に、検索インターフェースを実装するかどうかを決定します 検索ダイアログや検索ウィジェットを使用できます。同じ検索を行う 機能が若干異なります。

  • 検索ダイアログは、Google Cloud コンソールで ダウンロードします。ユーザーが有効にすると、検索ダイアログが アクティビティの先頭に配置します。

    検索ダイアログ内のイベントはすべて、Android システムが制御します。Google ユーザーがクエリを送信すると、システムはそのクエリを 検索を処理できます。このダイアログでは 入力中の候補を表示します。

  • 検索ウィジェットは、 SearchView 配置することもできますデフォルトでは、検索ウィジェットは 標準 EditText 何も実行しませんが、Android アプリが システムですべての入力イベントを処理し、適切な 検索アクティビティと同じように、検索候補を提示します。 クリックします。
で確認できます。 <ph type="x-smartling-placeholder">

ユーザーが検索ダイアログまたは検索ウィジェットから検索を実行すると、 システムによって Intent、 ユーザークエリが保存されます。その後、指定したアクティビティが 「検索可能アクティビティ」を宣言し、 渡します。このような検索支援向けにアプリを設定するには、以下が必要です。 次のとおりです。

  • 検索構成
    検索ダイアログまたは検索ウィジェットの一部の設定を構成する XML ファイル。 音声検索、検索候補、 検索ボックスに入力します。
  • 検索可能なアクティビティ
    Activity は、検索クエリを受信し、データを検索し、 表示されます。
  • 検索インターフェース。次のいずれかで提供:
    • 検索ダイアログ
      デフォルトでは、検索ダイアログは非表示になっています。上部に 着信画面を表示する onSearchRequested() ユーザーがニュース メディアの [検索] ボタンをタップしたとき。
    • SearchView ウィジェット
      検索ウィジェットを使用すると、画面上の任意の場所に検索ボックスを配置できます。 (アプリバーにアクション ビューとして表示できます)

このドキュメントの残りの部分では、検索構成を作成する方法について説明します。 および検索可能アクティビティと検索インターフェースを実装する方法について、 検索ダイアログまたは検索ウィジェットです

検索可能な構成を作成する

まず必要なのは、Terraform という 検索設定。 検索ダイアログまたは検索ウィジェットの特定の UI 要素を設定し、 機能の動作を変更できます。このファイルは通常、 searchable.xml という名前で、res/xml/ ファイルに保存する必要があります。 ディレクトリにあります。

<ph type="x-smartling-placeholder">

検索構成ファイルには、 <searchable> 要素をルートノードとして指定し、1 つ以上の属性を指定します。 次の例をご覧ください。

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint" >
</searchable>

android:label 属性は唯一の必須属性です。これは、 文字列リソースを指します。文字列リソースにはアプリ名を指定する必要があります。このラベルは クイック検索ボックスの検索候補を有効にするまで、ユーザーに表示されます: システムの検索可能アイテムのリストにラベルが表示されるポイント 設定。

必須ではありませんが、必ず android:hint 属性。検索にヒント文字列を指定します。 ボックスにチェックを入れます。ヒントは重要な役割を果たします。 重要な手がかりを明示する必要があります。

<ph type="x-smartling-placeholder">

<searchable> 要素には他にもいくつかの属性を使用できます。 ただし、次のような機能を追加するまで、ほとんどの属性は必要ありません。 検索候補 音声検索。「新規顧客の獲得」目標について詳しくは、 詳細については、このモジュールの 検索設定 ご覧ください。

検索可能なアクティビティを作成する

検索可能なアクティビティとは、以下を実行するアプリ内の Activity のことです。 クエリ文字列に基づいて検索し、検索結果を表示します。

ユーザーが検索ダイアログまたは検索ウィジェットで検索を実行すると、 ユーザーが検索可能なアクティビティを開始し、 Intent は、 ACTION_SEARCH できます。検索可能なアクティビティが、インテントの QUERY データを検索し、結果を表示します。

検索ダイアログや検索ウィジェットは、 どのアクティビティが検索可能アクティビティかを認識するため、 検索クエリを正しく配信できているか 確認しましょうそのため、まず検索可能として宣言し、 Android マニフェスト ファイル内のアクティビティなどです。

検索可能アクティビティを宣言する

まだ作成していない場合は、実行する Activity を作成します。 結果を提示します検索を実装する必要がないか、 関数が用意されています。 使用します。マニフェストの <activity> 次の操作を行います。

  1. ACTION_SEARCH インテントを受け入れるように、 <intent-filter> 要素です。
  2. 検索構成で使用する検索構成を <meta-data> 要素です。

これを次の例に示します。

<application ... >
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>
    ...
</application>

<meta-data> 要素には、 次の値を持つ android:name 属性 "android.app.searchable"android:resource 属性に、検索可能な構成ファイルへの参照を追加します。 上記の例では、res/xml/searchable.xml を参照します。 表示されます。

<ph type="x-smartling-placeholder">

検索の実行

マニフェストで検索可能アクティビティを宣言したら、次の手順を行います。 検索可能アクティビティで検索を実行する方法は次のとおりです。

  1. クエリを受信します。
  2. データを検索する
  3. 結果を提示する

クエリを受信する

ユーザーが検索ダイアログまたは検索ウィジェットから検索を実行すると、 ユーザーが検索可能なアクティビティを開始して、それに ACTION_SEARCH を送信します。 使用します。このインテントには QUERY 文字列の検索クエリが含まれます 追加できますアクティビティの開始時にこのインテントを確認し、文字列を抽出します。 たとえば、このように検索可能な場合、 アクティビティが開始されます。

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.search)

    // Verify the action and get the query.
    if (Intent.ACTION_SEARCH == intent.action) {
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doMySearch(query)
        }
    }
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    // Get the intent, verify the action, and get the query.
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

QUERY 文字列は常に ACTION_SEARCH インテント。上記の例では、クエリは ローカルの doMySearch() メソッドに渡されます。この場合、 実行されます。

データを検索する

データの保存と検索のプロセスはアプリに固有のものです。Google Chat では 保存と検索にはさまざまな方法がありますが、このドキュメントではその方法については説明しません。 ニーズとデータの観点から、データの保存方法と検索方法を検討する 使用できます。適用できるヒントは次のとおりです。

  • データがデバイスの SQLite データベースに保存されている場合は、 全文検索(LIKE ではなく FTS3 を使用) テキストデータ全体にわたるより堅牢な検索を提供でき、 結果を迅速に生成できるようになります詳しくは、 sqlite.org: FTS3 および SQLiteDatabase Android での SQLite については、クラスをご覧ください。
  • データがオンラインに保存されている場合、認識される検索パフォーマンスは ユーザーのデータ接続によって禁止されることもあります。新しい P-MAX キャンペーンを 進行状況インジケーターが表示されます。詳しくは、 android.net を参照してください。 ProgressBar をご覧ください。
で確認できます。 <ph type="x-smartling-placeholder">

結果の提示

データの保存場所や検索方法に関係なく、 検索結果が検索可能なアクティビティに返され、 Adapter。この すべての検索結果を 1 つの形式で RecyclerView。 データが SQLite データベース クエリから取得された場合は、結果を RecyclerView を使用: CursorAdapter。 データの形式が異なる場合は、拡張子が .tfvars または BaseAdapter

Adapter は、データセットの各項目を View オブジェクト。日時 AdapterRecyclerView に適用され、それぞれの部分で 個別のビューとしてリストに挿入されます。Adapter は インターフェースにすぎないため、 CursorAdapter - Cursor - 必要ありません。既存の実装がデータに適さない場合は、次の方法をお試しください。 BaseAdapter から独自のものを実装できます。

検索ダイアログを使用する

検索ダイアログの画面上部にはフローティング検索ボックスがあり、 左側にアプリアイコンが表示されます検索ダイアログでは、検索候補を表示できます。 表示されます。ユーザーが検索を実行すると、システムは 検索を実行する検索可能アクティビティにクエリを発行します。

デフォルトでは、検索ダイアログはユーザーが有効にするまで常に非表示になっています。 アプリで検索ダイアログを有効にするには、 onSearchRequested()。ただし、この方法は アクティビティの検索ダイアログを有効にする

検索ダイアログで検索を実行できるようにするには、システムに対して 検索可能アクティビティは、検索ダイアログから検索クエリを受け取る必要があります。対象 前のセクションでは 検索可能なアクティビティの作成 SearchableActivity という名前のアクティビティが作成されます。もし アクティビティ(たとえば、OtherActivity という名前のアクティビティ)を 検索ダイアログを表示して検索を SearchableActivity に配信する、 マニフェストで、SearchableActivity が検索可能アクティビティであること OtherActivity の検索ダイアログに使用する。

アクティビティの検索ダイアログの検索可能アクティビティを宣言するには、 <meta-data> 要素を <activity> 要素。<meta-data> 要素には、その要素を指定する android:value 属性を含める必要があります。 検索可能アクティビティのクラス名と android:name 属性 値は "android.app.default_searchable" です。

例として、2 つの検索可能アクティビティと、 SearchableActivity、別のアクティビティ OtherActivitySearchableActivity を使用して以下を行います。 次のようにして、検索ダイアログから検索を実行します。

<application ... >
    <!-- This is the searchable activity; it performs searches. -->
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>

    <!-- This activity enables the search dialog to initiate searches
         in the SearchableActivity. -->
    <activity android:name=".OtherActivity" ... >
        <!-- Enable the search dialog to send searches to SearchableActivity. -->
        <meta-data android:name="android.app.default_searchable"
                   android:value=".SearchableActivity" />
    </activity>
    ...
</application>

OtherActivity<meta-data> 要素を使用して、検索可能なアクティビティを宣言する アクティビティによって検索ダイアログが有効になります。ユーザーは このアクティビティでは、onSearchRequested() メソッドは 表示されます。ユーザーが検索を実行すると、システムは SearchableActivityして、ACTION_SEARCH にお届けします 使用します。

<ph type="x-smartling-placeholder">

アプリ内のすべてのアクティビティで検索ダイアログを表示する場合は、 の子として先行する <meta-data> 要素を <application> 要素を使用します。<activity>このようにして、 値を継承し、検索ダイアログを表示し、検索を 表示されます。検索可能なアクティビティが複数ある場合は、 デフォルトの検索可能アクティビティをオーバーライドするには、 個々のアクティビティ内で <meta-data> 宣言。

アクティビティに対して検索ダイアログが有効になったので、アプリで 検索を実行します。

検索ダイアログを呼び出す

一部のデバイスには専用の検索ボタンがありますが、 ボタンはデバイスによって異なる場合があり、検索機能が備わっていないデバイスも数多くあります。 ありません。そのため、検索ダイアログを使用するときは、検索ボタンを表示する必要があります。 を呼び出して、検索ダイアログをアクティブにします。 onSearchRequested()

たとえば、 オプション メニューまたは UI レイアウト onSearchRequested() を呼び出す関数です。

<ph type="x-smartling-placeholder">

[入力して検索] を有効にしてこの機能を有効にすると ユーザーがキーボードで入力し始めると検索ダイアログが表示されます。キー入力は、 自動的に挿入されます。アクティビティで入力による検索を有効にできます。 呼び出す setDefaultKeyMode または DEFAULT_KEYS_SEARCH_LOCAL - 発生中 アクティビティの onCreate() メソッドを呼び出します。

検索ダイアログがアクティビティのライフサイクルに及ぼす影響

検索ダイアログは 浮動小数点型の Dialog ] を選択します。アクティビティ スタックには変化がないため、 検索ダイアログが表示された場合、 onPause() - 呼び出すことができます。入力フォーカスが対象のアクティビティに付与されているため、アクティビティは入力フォーカスを失う 表示されます。

検索ダイアログが有効になったときに通知を受け取るには、 onSearchRequested() メソッドを使用します。このメソッドが呼び出されると、 は、アクティビティが検索ダイアログへの入力フォーカスを失ったことを示しているため、 ゲームの一時停止など、イベントに適した作業を行うことができます。ただし、 検索コンテキストを データ(このドキュメントの別のセクションに記載)を使用していて、 メソッドを呼び出せます。

Kotlin

override fun onSearchRequested(): Boolean {
    pauseSomeStuff()
    return super.onSearchRequested()
}

Java

@Override
public boolean onSearchRequested() {
    pauseSomeStuff();
    return super.onSearchRequested();
}

ユーザーが [戻る] ボタンをタップして検索をキャンセルすると、検索ダイアログ アクティビティは入力フォーカスを取り戻します。登録して通知を受け取ることができます 検索ダイアログを閉じると setOnDismissListener(), setOnCancelListener(), または両方を選択できます必要なのは、 OnDismissListener, これは検索ダイアログが閉じるたびに呼び出されるためです。「 OnCancelListener ユーザーが検索ダイアログを明示的に終了したイベントにのみ関連しているため、 検索の実行時に呼び出されません検索を実行すると、 検索ダイアログは自動的に消えます。

現在のアクティビティが検索可能でない場合、通常の アクティビティのライフサイクル イベントは、ユーザーが 検索 - 現在のアクティビティが onPause() を受け取ります。これは説明のとおりです。 「Introduction to アクティビティをご覧ください。ただし、現在のアクティビティが検索可能なアクティビティである場合、 次の 2 つのいずれかが発生します。

  • デフォルトでは、検索可能アクティビティは onCreate() への呼び出しを含む ACTION_SEARCH インテント、 そのアクティビティの新しいインスタンスが 説明します。これで、検索可能なアクティビティのインスタンスが 表示されるので、[戻る] ボタンをタップすると前の 終了するのではなく、検索可能アクティビティの できます。
  • android:launchMode"singleTop" に設定すると、 この場合、検索可能アクティビティは ACTION_SEARCH インテントを受け取ります。 呼び出しによる onNewIntent(Intent), 新しい ACTION_SEARCH インテントを渡します。たとえば この場合、検索可能アクティビティの起動モードが "singleTop" です。

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.search)
        handleIntent(intent)
    }
    
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        handleIntent(intent)
    }
    
    private fun handleIntent(intent: Intent) {
        if (Intent.ACTION_SEARCH == intent.action) {
            intent.getStringExtra(SearchManager.QUERY)?.also { query ->
                doMySearch(query)
            }
        }
    }
    

    Java

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        handleIntent(getIntent());
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        handleIntent(intent);
    }
    
    private void handleIntent(Intent intent) {
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
          String query = intent.getStringExtra(SearchManager.QUERY);
          doMySearch(query);
        }
    }
    

    前のセクションのサンプルコードとの違い、 検索を実行すると、その処理に必要なすべてのコードが 検索インテントが handleIntent() メソッドに追加されたため、 onCreate()onNewIntent() が実行できます。

    システムが onNewIntent(Intent) を呼び出しても、アクティビティは その場合、 getIntent() メソッドは onCreate() で受け取ったインテントと同じインテントを返します。 このため、 setIntent(Intent) onNewIntent(Intent) 内: 作成されたインテントが 今後 getIntent() を呼び出した場合に備えて、アクティビティが更新されます。

2 つ目のシナリオ("singleTop" 起動モードを使用する)は通常、 推奨されます。検索が行われた後、ユーザーが別の処理も行う可能性があるためです。 アプリケーションで複数のインスタンスを できます。検索可能なアクティビティを 次に示すように、アプリ マニフェストの "singleTop" 起動モードを指定します。 次の例をご覧ください。

<activity android:name=".SearchableActivity"
          android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
          android:name="android.app.searchable"
          android:resource="@xml/searchable"/>
  </activity>

検索コンテキスト データを渡す

場合によっては、内部の検索クエリに必要な調整を加える すべての検索の検索可能アクティビティが表示されます。一方 オーディエンスの ユーザーが行った操作に基づく検索条件 インテントで追加のデータを入力することで、 表示されます。追加のデータは APP_DATA Bundle、つまり ACTION_SEARCH インテントに含まれています。

この種のデータを検索可能なアクティビティに渡すには、 ユーザーが操作できるアクティビティの onSearchRequested() メソッド 検索を実行し、追加データを使用して Bundle を作成する 発信 startSearch() 検索ダイアログを開きます例:

Kotlin

override fun onSearchRequested(): Boolean {
    val appData = Bundle().apply {
        putBoolean(JARGON, true)
    }
    startSearch(null, false, appData, false)
    return true
}

Java

@Override
public boolean onSearchRequested() {
     Bundle appData = new Bundle();
     appData.putBoolean(SearchableActivity.JARGON, true);
     startSearch(null, false, appData, false);
     return true;
 }

true が返された場合、このコールバック イベントが正常に処理され、 startSearch() を呼び出して検索ダイアログを有効にします。ユーザーの操作 クエリを送信すると、クエリがデータとともに検索可能なアクティビティに配信されます。 追加できます。APP_DATA から追加データを抽出できます。 次の例に示すように、Bundle を使用して検索を絞り込みます。

Kotlin

val jargon: Boolean = intent.getBundleExtra(SearchManager.APP_DATA)?.getBoolean(JARGON) ?: false

Java

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
    boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
}
<ph type="x-smartling-placeholder">

検索ウィジェットを使用する

アプリのトップバーの検索ビューを示す画像

図 1. SearchView ウィジェットの用途 アクション ビューを表示します。

検索ウィジェットは検索ダイアログと同じ機能を備えています。これは、 ユーザーが検索を実行したときに適切なアクティビティを起動し、 検索候補の提供や音声検索を行います。別のデバイスで 検索ウィジェットをアプリバーに配置したい場合は 配置する必要があります。

<ph type="x-smartling-placeholder">

検索ウィジェットを設定する

新しい P-MAX キャンペーンを 検索設定検索可能なアクティビティ、アシスト検索を有効にする 次のように呼び出して、SearchView ごとに setSearchableInfo() そのオブジェクトを表す SearchableInfo オブジェクトを 構成できます。

SearchableInfo への参照を取得するには、次の呼び出しを呼び出します。 getSearchableInfo() オン SearchManager

たとえば、SearchView をアクション ビューとして使用している場合、 ウィジェットを onCreateOptionsMenu() コールバックを渡す必要があります。

Kotlin

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the options menu from XML.
    val inflater = menuInflater
    inflater.inflate(R.menu.options_menu, menu)

    // Get the SearchView and set the searchable configuration.
    val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
    (menu.findItem(R.id.menu_search).actionView as SearchView).apply {
        // Assumes current activity is the searchable activity.
        setSearchableInfo(searchManager.getSearchableInfo(componentName))
        setIconifiedByDefault(false) // Don't iconify the widget. Expand it by default.
    }

    return true
}

Java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the options menu from XML.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Get the SearchView and set the searchable configuration.
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    // Assumes current activity is the searchable activity.
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false); // Don't iconify the widget. Expand it by default.

    return true;
}

検索ウィジェットが設定され、システムによって検索クエリが配信されます 追加できます「新規顧客の獲得」目標を 検索ウィジェットの検索候補

<ph type="x-smartling-placeholder">

アプリバーのアクション ビューについて詳しくは、以下をご覧ください。 アクション ビューとアクションを使用する プロバイダをご覧ください。

検索ウィジェットのその他の機能

SearchView ウィジェットには、次のような追加機能があります。 必要:

送信ボタン
デフォルトでは検索クエリを送信するボタンがないため、ユーザーは キーボードの Return キーを押して検索を開始します。マイページ 「送信」ボタンを追加できますボタンをクリックすることで setSubmitButtonEnabled(true)
検索候補のクエリの絞り込み
検索候補を有効にすると、通常はユーザーが検索結果の候補を 検索語句の候補をさらに絞り込むこともできます。 候補を挿入する各候補の横にボタンを追加できます し、 setQueryRefinementEnabled(true)
検索ボックスの表示 / 非表示を切り替える機能
デフォルトでは、検索ウィジェットは「アイコン化」されており、意味します。 検索アイコン(虫メガネ)だけで表示されます。Kubernetes は、 ユーザーがアイコンをタップしたときに検索ボックスを表示するようにします。上記のように、 たとえば、次のように呼び出して検索ボックスを setIconifiedByDefault(false)。 次の呼び出しを呼び出して、検索ウィジェットの外観を切り替えることもできます。 setIconified()

SearchView クラスには、以下を可能にする API が他にもいくつかあります。 検索ウィジェットをカスタマイズできます。ただし、そのほとんどは ユーザー入力をすべて自分で処理し、Android システムを使用して 検索候補を表示したりできます

ウィジェットとダイアログの両方を使用する

検索ウィジェットをアプリバーに アクション ビューを作成し、 スペースがある場合は、 android:showAsAction="ifRoom" の場合、検索ウィジェットは アクションビューとして 表示されませんその代わり、メニュー項目がオーバーフローに表示されることがあります。 選択します。たとえば、アプリが小さな画面で実行されている場合、 検索ウィジェットを他のアクションとともに表示できる十分なスペースがアプリバーに表示されます。 ナビゲーション要素があるため、メニュー項目はオーバーフローに表示されます。 選択します。オーバーフロー メニューに配置すると、アイテムは通常のメニューと同じように動作します アクション ビュー(検索ウィジェット)は表示されません。

この状況に対処するには、検索ウィジェットをアタッチするメニュー項目を ユーザーがオーバーフロー メニューから検索ダイアログを選択したときに、それを有効にする必要がある。 そのためには onOptionsItemSelected() "Search" 処理を検索ダイアログを開くには、 onSearchRequested()

アプリバーのアイテムの仕組みと処理方法の詳細 詳しくは、 アプリバーを追加します

音声検索を追加

次の方法で、音声検索機能を検索ダイアログやウィジェットに追加できます。 android:voiceSearchMode 属性を検索可能ファイルに追加する できます。これにより、音声プロンプトを起動する音声検索ボタンが追加されます。 ユーザーが話し終えると、文字起こしされた検索クエリがニュース メディアの できます。

これを次の例に示します。

<?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:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</searchable>

音声を有効にするには、値 showVoiceSearchButton が必要です できます。2 つ目の値 launchRecognizer は、 音声検索ボタンは、認識を起動する必要があります。 音声文字変換されたテキストを検索可能なアクティビティに書き込みます。

追加の属性を指定して音声検索の動作を指定できます。 たとえば、想定される言語や返す結果の最大数などです。詳しくは、 検索構成のリファレンス 使用可能な属性に関する情報が表示されます。

<ph type="x-smartling-placeholder">で確認できます。

検索候補を追加する

検索ダイアログと検索ウィジェットの両方で検索候補を提供できる 入力テキストを自動的に認識できます。システムは 候補のリストが表示され、ユーザーが 表示されます。

検索候補には次の 2 種類があります。

最近のクエリに基づく検索候補
これらの候補は、ユーザーが以前に検索に使用した語句です 使用できます。追加をご覧ください。 カスタム検索候補をご覧ください。
カスタム検索候補
こちらは独自のデータソースに基づいて提供される検索候補です 検索している正しいスペルやアイテムをユーザーがすぐに選択できるようにする できます。カスタム検索の追加 のヒントをご覧ください。