【问题标题】:How to implement Voice search to SearchView如何实现对 SearchView 的语音搜索
【发布时间】:2013-07-24 15:15:06
【问题描述】:

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

【问题讨论】:

    标签: android searchview


    【解决方案1】:

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

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

      &lt;meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /&gt;

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

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

    欲了解更多信息see docs

    【讨论】:

      【解决方案2】:

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

      在该文件的&lt;searchable /&gt; 元素中,您应该添加此属性:

      android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"

      还有其他语音相关的属性(目前voicePromptTextvoiceLanguageModelvoiceLanguage)都是described here

      【讨论】:

        【解决方案3】:

        您可以查看文档here

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

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

        干杯!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多