안녕하세요. 안드로이드를 공부하고 있는 학생인데요~
현재 오픈소스를 따와서 하고있는데요...
이 소스는 현재 액티비티가 안뜨면서 문장을 말하고 말을 끝내야 음성인식한 결과값을 한꺼번에 나타내는데요. 말을 안하면 기능이 활성화가 안되고 버튼을 다시 눌러야 음성인식을 하더라구요.
저는 음성을 인식할때마다 그때그때 결과값을 타이핑 하는것처럼 하게 하고 싶구, 음성이 꺼지더라도 다시 켜지게 하고 싶은데 어느 코드를 수정해야 할까요 ㅠ
도와주세요 ㅠㅠ
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
Intent intent;
SpeechRecognizer mRecognizer;
EditText editText;
private final int MY_PERMISSIONS_RECORD_AUDIO = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.RECORD_AUDIO)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.RECORD_AUDIO}, MY_PERMISSIONS_RECORD_AUDIO
);
}
}
intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");
mRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
mRecognizer.setRecognitionListener(recognitionListener);
editText = (EditText) findViewById(R.id.editText);
public void getSpeechInput(View view) {
mRecognizer.startListening(intent);
}
private RecognitionListener recognitionListener = 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) {
editText.setText("너무 늦게 말하면 오류뜹니다");
}
@Override
public void onResults(Bundle bundle) {
String key = "";
key = SpeechRecognizer.RESULTS_RECOGNITION;
ArrayList<String> mResult = bundle.getStringArrayList(key);
String[] rs = new String[mResult.size()];
mResult.toArray(rs);
editText.setText(rs[0]);
}
@Override
public void onPartialResults(Bundle bundle) {
}
@Override
public void onEvent(int i, Bundle bundle) {
}
};
}