Google Speech to Text API раздел «Попробуйте еще раз» необходимо изменить - PullRequest
0 голосов
/ 18 марта 2020

мое приложение для распознавания голоса (с использованием 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();

}

...