【发布时间】:2015-09-29 11:51:32
【问题描述】:
我已使用以下小代码在我的 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 即可将焦点放在文本框上。
在上面的示例中,当我按下搜索图标时,我可以看到“内置文本框”,但如果我尝试导航到它,搜索就会中断并关闭。
如何访问搜索文本框?这应该取消语音输入并调出键盘,就像 Play Store 应用一样。
【问题讨论】:
标签: android speech-recognition voice-recognition android-tv