мое приложение для распознавания голоса (с использованием Google API) готово на 90%. Единственная проблема, которая у меня есть сейчас, - это то, что при распознавании голоса не удается распознать мой голос, появляется всплывающая кнопка «Повторить попытку». Я хочу, чтобы эта кнопка автоматически щелкала, и когда api не распознает голос, он должен снова слушать, не касаясь какой-либо кнопки.
speak () - Когда этот метод вызывается, он активирует прослушивание.
makePhoneCall () sendSMSMesaage () - это два моих пользовательских метода.
Когда я возвращаюсь к приложению после вызова этих методов, метод speak () работает отлично и автоматически начинает прослушивание снова. Когда api терпит неудачу, я хочу, чтобы тот же метод "speak ()" работал и слушал автоматически, но я не смог. Мне нужна помощь в этом вопросе.
Заранее благодарен за то, что поделился своими идеями .....
private void speak() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "tr-TR");
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Hi speak something");
//start intent
try {
startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT);
} catch (Exception e) {
//if there was some error
// get message of error and show
Toast.makeText(this, "" + e.getMessage(), Toast.LENGTH_SHORT ).show();
}
}
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
mTextTv.setText(result.get(0));
String givenText = "yardım edin";
String givenText2 = "imdat";
String givenText3 = "polisi ara";
if (givenText.toString().equalsIgnoreCase(mTextTv.getText().toString())) {
makePhoneCall();
sendSMSMessage();
}
else if (givenText2.toString().equalsIgnoreCase(mTextTv.getText().toString())) {
makePhoneCall2();
}
else if (givenText3.toString().equalsIgnoreCase(mTextTv.getText().toString())) {
makePhoneCall();
}
break;
}
break;
}
}
speak();
}