我想在我的应用程序中添加语音搜索功能。我正在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;
}
}
Mainfest
<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>
答案 0 :(得分:5)
您可以查看文档here
更新:如果您的SearchActivity是相同的,您可以覆盖onNewIntent并在那里处理搜索意图。同时将您的活动设为singleTop,这样只有一个活动实例将保持在最顶层。
希望这有帮助,如果找到解决方案,请通知。
干杯!
答案 1 :(得分:3)
在res/xml
文件夹中,您应该有一个可搜索的文件(通常称为searchable.xml
)。
在该文件的<searchable />
元素中,您应该添加以下属性:
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
还有其他与语音相关的属性(目前为voicePromptText
,voiceLanguageModel
和voiceLanguage
),这些属性均为described here。
答案 2 :(得分:0)
如果您有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()));
有关更多信息,see docs。