안녕하세요! 간략하게 설명 드리면 서브 액티비티들로 가는 메인 액티비티가 있고, 서브 액티비티로 이동하면 edittext와 tts기능을 구현 해놓은 버튼, 그리고 edittext에 단어를 추가할 수 있는 단어 버튼들로 구현 해둔 상태입니다. 여기서 문제는 서브액티비티로 이동하여 TTS를 구현해놓은 버튼을 누를 때만 음성이 출력이 되어야 하는데, 서브액티비티로 이동하는 순간 자동으로 TTS기능이 실행됩니다!
즉, 액티비티를 이동하면 자동으로 음성출력이 실행됩니다!! 개발자라 하기도 부끄러운 초보라 어디 부분을 봐야 하는지 모르겠습니다 ㅠㅠ 도와주십쇼 고수님들!!
코드는 글자수 제한상 tts와 액티비티 이동에 관한 부분만 남겼습니다.
메인 - <MainActivity.java>
package test.study;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView tv_main;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_main);
// 상징 각 카테고리로 이동하는 버튼
Button btn_go_인사 = (Button) findViewById(R.id.button_select_인사);
btn_go_인사.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), SelectHelloActivity.class);
intent.putExtra("sendData",tv_main.getText().toString());
startActivity(intent);
}
}
);
}
}
서브 <SelectHelloActivity.java>
package test.study;
import java.util.Locale;
import android.content.Intent;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SelectHelloActivity extends AppCompatActivity implements
View.OnClickListener, TextToSpeech.OnInitListener {
Button buttonEvent;
EditText ed_main;
// TTS
TextToSpeech tts;
Button btnSpeak;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_hello);
// TTS 버튼
tts = new TextToSpeech(this, this);
btnSpeak = (Button) findViewById(R.id.button_Speak);
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speakOut();
}
});
}
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.KOREA);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "지원되지 않는 언어입니다.");
} else {
btnSpeak.setEnabled(true);
speakOut();
}
} else {
Log.e("TTS", "출력 실패!");
}
}
private void speakOut(){
String text = ed_main.getText().toString();
tts.speak(text, TextToSpeech.QUEUE_FLUSH,null, null);
}
}