안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
지금 알람설정하고 그 시간이 되면 TTS가 서비스로 작동되는 걸 구현하고 있습니다.
메인 액티비티에서 알람 설정하는거 짜놓고
AlarmReceiver.java 라고 BroadcastReceiver extend 해주고
public class AlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, TTS.class));
}
}
---------------------------------------------------------------------
TTS.java 파일을 만들어서 service로 만들었습니다.
public class TTS extends Service implements TextToSpeech.OnInitListener {
private TextToSpeech mTts;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
if (mTts != null) {
mTts.stop();
mTts.shutdown();
}
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startId) {
mTts = new TextToSpeech(this, this);
speakOut();
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS)
{
int result = mTts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
{
Log.e("TTS", "This Language is not supported");
}
speakOut();
}
else
{
Log.e("TTS", "Initilization Failed!");
}
}
private void speakOut() {
mTts.speak("its working", TextToSpeech.QUEUE_FLUSH, null);
}
}
이렇게 해서 시간 설정하고 설정한 시간이 되면 its working이라고 백그라운드에서 말해주거든요.
근데 문제가 LogCat을 보면
speak failed: not bound to TTS engine이라고 뜹니다.
그리고 가끔 자기 맘대로 랜덤하게 its working이라고 목소리가 나오네요 분명히 onDestroy가 있는데 말이죠...ㅠㅠ
문제가 뭔지 알려주시면 정말 감사하겠습니다.
TTS를 실행을할때 핸들러로 시간을 조금 주고 한번 해보시겠나요?
저도 일전에 TTS로 음성지원을만들었을때, 호출되자마자 실행을 시키면 안됬는데
약 0.5초~1초사이 뒤에 TTS 실행을 시키니 문제없이 됬던 기억이 납니다.