如何在SearchView中实现语音搜索

16

我想在我的应用程序中添加语音搜索功能。我正在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>
3个回答

5
在你的res/xml文件夹中,应该有一个可搜索的文件(通常称为searchable.xml)。
在该文件中的<searchable />元素内,您应该添加此属性: android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" 还有其他与语音相关的属性(目前包括voicePromptTextvoiceLanguageModelvoiceLanguage),这些都在这里描述。

4
你可以在这里查看文档:此处 更新:如果你的SearchActivity是相同的,你可以覆盖onNewIntent并在那里处理搜索意图。同时将你的活动设置为singleTop,这样只有一个实例的活动会停留在顶部。
希望这可以帮助你,请务必通知我是否找到了解决方案。
干杯!

1
如果您拥有一个SearchView而不是SearchActivity,您可以执行以下两个步骤来解决此问题:
  1. 在manifest.xml中声明可搜索的设置,放置在activity标签内,如下所示:

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

  2. 然后在您的activity类中(即onCreateOptionsMenu()方法中),将可搜索的设置与SearchView关联起来,如下所示:

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

欲了解更多信息,请参见文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接