【发布时间】:2018-11-22 00:39:37
【问题描述】:
我正在尝试开发一款能够倾听并回馈用户的应用。我正在努力让它尽可能免提。
我的问题是,如果用户没有及时响应,SpeechRecognition 会超时,用户需要按下按钮重新开始收听。
*我有没有办法解决如果应用程序没有听到任何声音,它会提示重试并重新启动侦听器?
代码:
//Function i call when a user input is required.
private void promptSpeechInput() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
try {
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
} catch (ActivityNotFoundException a) {
Toast.makeText(getApplicationContext(),
getString(R.string.speech_not_supported),
Toast.LENGTH_SHORT).show();
}
}
/**
* Receiving speech input
* */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println("REQUEST CODE: " + requestCode);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
System.out.println("resultCode: " + resultCode);
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
txtSpeechInput.setText(result.get(0));
input = result.get(0).toLowerCase();
}
break;
}
}
}
我还有代码可以向用户读取文本,然后在完成后提示语音输入。
如果我可以提供更多详细信息或代码,请告诉我。非常感谢!
【问题讨论】:
标签: java android speech-recognition