Android-手动输入电视语音识别
Android-TV speech recognition with manual input
我使用以下小代码在我的 Android-TV 应用程序上实现了语音搜索
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);
}
一切正常,我得到了结果以供进一步处理。
问题是我还想让用户可以使用虚拟键盘手动输入搜索字符串。
在 Google 自己的应用程序中,您只需在按下语音搜索图标后按下遥控器上的 RIGHT 即可将焦点置于文本框上。
在我上面的示例中,当我按下搜索图标时,我可以看到 "built-in-textbox",但如果我尝试导航到它,搜索就会中断并关闭。
如何访问搜索文本框?这应该会取消语音输入并调出键盘,就像 Play 商店应用一样。
您是否在 Android 电视应用程序设计中使用 Leanback 支持库?
我猜 "Google Play Store app" 和 "YouTube app" 正在使用 BrowseFragment 和 SearchFragment 进行搜索。这些片段提供内置搜索 UI。
实现见Google's sample source code or SearchFragment – Android TV app Tutorial 12。
我使用以下小代码在我的 Android-TV 应用程序上实现了语音搜索
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);
}
一切正常,我得到了结果以供进一步处理。
问题是我还想让用户可以使用虚拟键盘手动输入搜索字符串。 在 Google 自己的应用程序中,您只需在按下语音搜索图标后按下遥控器上的 RIGHT 即可将焦点置于文本框上。
在我上面的示例中,当我按下搜索图标时,我可以看到 "built-in-textbox",但如果我尝试导航到它,搜索就会中断并关闭。
如何访问搜索文本框?这应该会取消语音输入并调出键盘,就像 Play 商店应用一样。
您是否在 Android 电视应用程序设计中使用 Leanback 支持库? 我猜 "Google Play Store app" 和 "YouTube app" 正在使用 BrowseFragment 和 SearchFragment 进行搜索。这些片段提供内置搜索 UI。
实现见Google's sample source code or SearchFragment – Android TV app Tutorial 12。