import
android.content.Intent;
import
android.os.Bundle;
import
android.speech.RecognitionListener;
import
android.speech.RecognizerIntent;
import
android.speech.SpeechRecognizer;
import
android.view.MotionEvent;
import
android.view.View;
import
android.widget.EditText;
import
androidx.appcompat.app.AppCompatActivity;
import
java.util.ArrayList;
import
java.util.Locale;
public
class
MainActivity
extends
AppCompatActivity {
EditText editText;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit_text);
final
SpeechRecognizer mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(
this
);
final
Intent mSpeechRecognizerIntent =
new
Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
mSpeechRecognizer.setRecognitionListener(
new
RecognitionListener() {
@Override
public
void
onReadyForSpeech(Bundle bundle) {
}
@Override
public
void
onBeginningOfSpeech() {
}
@Override
public
void
onRmsChanged(
float
v) {
}
@Override
public
void
onBufferReceived(
byte
[] bytes) {
}
@Override
public
void
onEndOfSpeech() {
}
@Override
public
void
onError(
int
i) {
}
@Override
public
void
onResults(Bundle bundle) {
ArrayList<String> matches = bundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
if
(matches !=
null
)
editText.setText(matches.get(
0
));
}
@Override
public
void
onPartialResults(Bundle bundle) {
}
@Override
public
void
onEvent(
int
i, Bundle bundle) {
}
});
findViewById(R.id.microphone).setOnTouchListener(
new
View.OnTouchListener() {
@Override
public
boolean
onTouch(View view, MotionEvent motionEvent) {
switch
(motionEvent.getAction()) {
case
MotionEvent.ACTION_UP:
mSpeechRecognizer.stopListening();
editText.setHint(
" "
);
break
;
case
MotionEvent.ACTION_DOWN:
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
editText.setText(
""
);
editText.setHint(
""
);
break
;
}
return
false
;
}
});
}
}