web-dev-qa-db-ja.com

SearchViewに音声検索を実装する方法

アプリケーションに音声検索機能を追加したい。 SherlockActivityにSearchViewを入力しています。しかし、SearchViewオブジェクトに音声検索機能を追加するための解決策が見つかりません。

アドバイスをいただけますか、何をする必要がありますか?

以下のコード:

    public class MainActivity extends SherlockActivity {
        private SlidingMenu slidingMenu;
        private SlidingMenu slidingMenuRight;
        private String mFilterArrays[];
        public long lastScrollTime=0; /** En son kaydırma ne zaman yapıldı*/
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    }   

        public boolean onCreateOptionsMenu(Menu menu) {

                    //Create the search view
                    SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
                    searchView.setQueryHint("Search...");


                    menu.add("Search")
                        .setIcon(R.drawable.ic_search_inverse)
                        .setActionView(searchView)
                        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
                        return true;
    }
}

メインフェスト

<activity
    Android:name="com.paea.bcp.MainActivity"
    Android:label="@string/app_name" >
    <intent-filter>
        <action Android:name="com.paea.bcp.MainActivity" />
        <category Android:name="Android.intent.category.DEFAULT" />
        <action Android:name="Android.intent.action.SEARCH" />                
    </intent-filter>
</activity>
15
fobus

ドキュメントをチェックすることができます ここ

更新:SearchActivityが同じものである場合、onNewIntentをオーバーライドして、そこで検索インテントを処理できます。また、アクティビティをsingleTopとして作成します。そうすると、アクティビティの1つのインスタンスのみがトップに留まります。

これがお役に立てば幸いです。解決策が見つかったら通知してください。

乾杯!

5
Rahul Sainani

res/xmlフォルダーには、検索可能なファイル(通常はsearchable.xmlと呼ばれます)があります。

そのファイルの<searchable />要素内に、次の属性を追加する必要があります。

Android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"

他にも音声関連の属性(現在はvoicePromptTextvoiceLanguageModelvoiceLanguage)があり、これらはすべて ここで説明 です。

4

SearchActivityではなくSearchViewがある場合は、次の2つの手順を実行してこのような問題を解決できます。1)次のようにアクティビティのタグ内のmanifest.xmlで検索可能な設定を宣言します。

<meta-data Android:name="Android.app.searchable"
        Android:resource="@xml/searchable" />

2)次に、次のように、検索可能な設定をアクティビティクラス(つまり、onCreateOptionsMenu()メソッド)のSearchViewに関連付けます。

SearchManager searchManager =
       (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
        (SearchView) findViewById(R.id.search);
searchView.setSearchableInfo(
        searchManager.getSearchableInfo(getComponentName()));

詳細については ドキュメントを参照