낱말에 맞는 그림을 선택하는 게임인데 정답을 맞춘후 다음 문제로 넘어갈때 중복으로 tts가 실행 됩니다.
예를 들어 위의 text view가 사과 일때 사과 그림을 눌러 정답을 맞추면 정답이라는 tts가 실행되고 다음 문제로 넘어가면서 해당 위치그림의 tts가 실행됩니다. 액티비티를 넘어갈때 자동으로 tts가 실행되는데 어떻게 해야하나요. 다시 말하자면 정답을 맞춘후 다음 문제로 넘어갈때 자동으로 tts가 실행된다는 것입니다.
tts = new TextToSpeech(fruit.this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.KOREAN);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Toast.makeText(fruit.this, "지원하지 않는 언어", Toast.LENGTH_SHORT).show();
}
}
}
});
tts는 이렇게 구성했고 클릭을 받는 view는 아래 처럼 구성이 되어있습니다.
view1.setOnClickListener(new View.OnClickListener() { //View1 눌렀을 때 textview의 값에 따라서
@Override
public void onClick(View v) {
if(rr==0){
updateQuestion(r.nextInt(mQuestionLength));
mScore++;
}
if(rr==1){
tts.speak("레몬",TextToSpeech.QUEUE_FLUSH,null,null);
mFalse++;
Toast.makeText(getApplicationContext(),
"틀렸습니다.", Toast.LENGTH_SHORT).show();
}
if(rr==2){
tts.speak("사과",TextToSpeech.QUEUE_FLUSH,null,null);
mFalse++;
Toast.makeText(getApplicationContext(),
"틀렸습니다.", Toast.LENGTH_SHORT).show();
}
view는 총 4개가 있고 rr의 값에 따라서 각각의 view의 경우에 맞는 코드가 실행됩니다.
view코드 밑에 tts관련 onDestroy를 넣어놨습니다.
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}