This function starts speech recognition, but it times out too soon, where as if Speech recognition is started from the IME keyboard (eg Google keyboard) it does not timeout so quickly. I need a way to start the same intent as is used by the google keyboard.
public void StartSpeechRecognitionActivity(){
try{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 3000);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 3000);
main.startActivityForResult(intent, SPEECHRECOGNITION_RESULTCODE);
} catch (ActivityNotFoundException error) {
ShowAndSpeakMessage("Speech recognition is not supported by your device");
} catch( RuntimeException error ) {
Log.e( TAG, ERROR_PREFIX + Errors.toString(error) );
} catch( Error error ) {
Log.e( TAG, ERROR_PREFIX + Errors.toString(error) );
throw error;
}
}
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Voice recognition!");
startActivityForResult(intent, REQUEST_CODE);
This just works fine for me!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With