Голос в строку с помощью RecognizerIntent не работает - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь включить кнопку микрофона, чтобы пользователь мог щелкнуть ее, и она может предложить голосовой ввод от пользователя.Затем голосовой ввод будет преобразован в строку и показан в TextView в моем приложении для Android.На данный момент голосовой ввод может быть запрошен, но преобразованная строка не будет отображаться в моем TextView, и нет сбоев или logcat.Просто это не будет показано в моем TextView.Все это происходит в классе, который расширяет фрагмент.

Ниже приведен код кнопки моего микрофона: -

//Button to activate voice recognition
        microphonebutton = (ImageButton) view.findViewById(R.id.button_microphone);

        microphonebutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                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());

                if (intent.resolveActivity(getActivity().getPackageManager()) != null)  {
                    startActivityForResult(intent, 10);
                } else {
                    Toast.makeText(getActivity().getApplicationContext(), "Your device does not support speech input !",Toast.LENGTH_SHORT).show();
                }

            }
        });

Метод onActivityResult: -

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (resultCode) {
            case 10:
                if (resultCode == Activity.RESULT_OK && data != null) {
                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    texttotranslate.setText("");
                    texttotranslate.setText(result.get(0), TextView.BufferType.EDITABLE);

                }
                break;
        }

    }

Я получил эти коды из учебника на YouTube, и онказалось, работает хорошо для человека, который представлял учебник.

1 Ответ

0 голосов
/ 27 ноября 2018

У вас есть опечатка в методе onActivityResult.В переключателе вы проверяете resultCode дважды.Сначала вы должны проверить код запроса.Код запроса - это код, который вы определили в startActivityForResult, в вашем случае 10.

...