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>
4

3 回答 3

5

在您的res/xml文件夹中,您应该有一个可搜索的文件(通常称为searchable.xml)。

<searchable />该文件的元素中,您应该添加以下属性:

android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"

还有其他与语音相关的属性(当前和voicePromptText)都在此处进行了描述voiceLanguageModelvoiceLanguage

于 2017-03-21T16:55:45.200 回答
4

您可以在此处查看文档

更新:如果您的 SearchActivity 是同一个,您可以覆盖 onNewIntent 并在那里处理搜索意图。还将您的活动设置为 singleTop,这样只有一个活动实例将保持在顶部。

希望这会有所帮助,如果您找到解决方案,请通知。

干杯!

于 2013-07-26T13:03:05.120 回答
1

如果您有 SearchView 而不是 SearchActivity,您可以执行以下两个步骤来解决此类问题:

  1. 在活动标签内的 manifest.xml 中声明可搜索设置,如下所示:

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

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

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

有关更多信息,请参阅文档

于 2018-10-23T12:25:30.900 回答