Можно ли остановить запись вручную с помощью Voice RecognizerIntent в Android?

Сейчас я работаю с распознавателем голоса в Android, используя RecognizerIntent. Вот моя двусмысленность,

После нажатия кнопки записи из-за использования RecognizerIntent отображается одно всплывающее окно с диктофоном. После того, как он что-то сказал, это всплывающее окно автоматически останавливается, но я хочу разместить одну кнопку с именем «STOP». к этому всплывающему окну, чтобы вручную остановить текущую запись. Можно ли это сделать с помощью RecognizerIntent?

Предложение пожалуйста

спасибо за ваше драгоценное время!..

MainActivity.java

public class MainActivity extends Activity {

protected static final int RESULT_SPEECH = 1;

private ImageButton btnSpeak;
private TextView txtText;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txtText = (TextView) findViewById(R.id.txtText);

    btnSpeak = (ImageButton) findViewById(R.id.btnSpeak);

    btnSpeak.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");

            try {
                startActivityForResult(intent, RESULT_SPEECH);
                txtText.setText("");
            } catch (ActivityNotFoundException a) {

                Toast t = Toast.makeText(getApplicationContext(),
                        "Ops! Your device doesn't support Speech to Text",
                        Toast.LENGTH_SHORT);
                t.show();
            }
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

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

    switch (requestCode) {
    case RESULT_SPEECH: {
        if (resultCode == RESULT_OK && null != data) {

            ArrayList<String> text = data
                    .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

            txtText.setText(text.get(0));
        }
        break;
    }   }}}

person Manick    schedule 26.07.2014    source источник


Ответы (1)


Чтобы иметь полный контроль над пользовательским интерфейсом, реализуйте его самостоятельно (ваш текущий подход запускает внешнее действие) и получите доступ к распознавателю через Распознаватель речи.

person Kaarel    schedule 28.07.2014