使用RecognizerIntent的语音转字符串功能不起作用

时间:2018-11-27 00:11:04

标签: android textview voice-recognition microphone

我正在尝试添加一个麦克风按钮,用户可以在其中单击它,并且可以提示用户进行语音输入。然后,语音输入将转换为String并显示在我的Android应用程序的TextView中。现在,可以提示语音输入,但是转换后的字符串将不会显示在我的TextView中,并且没有崩溃或logcat。只是它不会显示在我的TextView中。所有这些都是在扩展Fragment的类中发生的。

下面是我的麦克风按钮的代码:-

//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 :(得分:0)

您在onActivityResult方法中有一个错字。在开关中,您将两次轻敲resultCode。首先,您应该检查requestCode。 requestCode是您在案例10中在startActivityForResult中定义的代码。