Не удается открыть ошибку микрофона при использовании действия

Я создаю приложение, которое использует API Google для преобразования речи в текст. Следующий код прекрасно работает, когда он установлен в качестве основного действия. Тем не менее, я сейчас создаю новое приложение и скопировал копию XML-макета и Java-файла в качестве действия под названием display_1, Моя проблема сейчас заключается в том, что, когда я перехожу к этому окну через приложение, я ожидаю, что распознавание голоса начнется через 500 мс, и на самом деле это происходит, но я получаю сообщение "Не удается открыть микрофон".

Я добавил правильные разрешения в файл gradle и установил правильный минимальный уровень API. Пожалуйста, не моя основная деятельность для приложения использует PocketSphinx SDK, а затем это второе действие называется display_1 использует Google API, который реализует onClickListener

Если кто-то может сказать мне, что заставляет меня получить предупреждение "Не удается открыть микрофон", это будет оценено. Обратите внимание, что Wi-Fi и т. Д. Подключены. Ниже приведен файл Java:

public class Display_1 extends Activity implements View.OnClickListener {

ListView lv;
static final int check = 1111;
Button b;
EditText a;
Button c;

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display_1);
    lv = (ListView) findViewById(R.id.lvVoiceReturn_1);
    a = (EditText) findViewById(R.id.TFusername_1);
    b = (Button) findViewById(R.id.bVoice_1);
    c = (Button)findViewById(R.id.Blogin_1);

    b.setOnClickListener(this);
    //This now handles an automatic press of the bVoice button 1 second after the activity is opened
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            b.callOnClick();
        }
    }, 1000);
}

public void onButtonClick(View v) {
    if (v.getId() == R.id.Blogin_1) {
        String str = a.getText().toString();


        //Go to the relevant page if any part of the phrase or word entered in the 'EditText' field contains 'next' which is not case sensitive
        if (str.toLowerCase().contains("next")) {
            Intent userintent = new Intent(Display_1.this, Display_2.class);
            startActivity(userintent);
        }else {
            Toast.makeText(getApplicationContext(), "Incorrect Information", Toast.LENGTH_SHORT).show();
        }
    }
}

@Override
public void onClick(View v) {
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Please Repeat Again");
    startActivityForResult(i, check);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == check && resultCode == RESULT_OK) {
        ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));

        a.setText((String) lv.getItemAtPosition(0));    //Get the first phrase in the first row of list view

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                c.performClick();
            }
        }, 500);    //Automatically click the 'Blogin' button after 500ms
    }

    super.onActivityResult(requestCode, resultCode, data);
}

}

Ниже приведены разрешения, которые я установил в файле манифеста Android:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

0 ответов

Другие вопросы по тегам