我使用下面的小代码在我的Android应用程序上实现了语音搜索
private void displaySpeechRecognizer() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, SPEECH_REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == SPEECH_REQUEST_CODE && resultCode == -1) {
List<String> results = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
String spokenText = results.get(0);
Toast.makeText(getActivity(), spokenText, Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}这一切都很好,我得到的结果,以进一步处理。
问题是,我还想让用户可以使用虚拟键盘手动输入搜索字符串。在谷歌自己的应用程序中,你只需在遥控器上按下按钮,在按下语音搜索图标后,就可以将焦点放在文本框上。
在上面的例子中,当我按下搜索图标时,我可以看到“内置文本框”,但是如果我试图导航到它,搜索就会被中断和关闭。
如何访问搜索文本框?这应该取消语音输入,而不是打开键盘,就像Play Store应用程序一样。
发布于 2015-09-30 05:05:07
您是否在使用Leanback支持库进行Android电视应用程序的设计?我猜"Google应用程序“和"YouTube应用程序”正在使用BrowseFragment & SearchFragment进行搜索。这些片段提供了内置的搜索UI。
有关实现,请参见Google的示例源代码或SearchFragment - Android电视应用程序教程12。
https://stackoverflow.com/questions/32843270
复制相似问题