import java.util.Locale;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.telephony.gsm.SmsMessage;
import android.util.Log;
import android.widget.Toast;public class SmsReceiver extends BroadcastReceiver implements
TextToSpeech.OnInitListener {
public static final String TAG = "SmsReceiver";private TextToSpeech mTts;
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
str += msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";
}Toast.makeText(context, str, 10000 * str.length()).show(); // 받은메세지 토스트 출력
mTts.speak("start",TextToSpeech.QUEUE_FLUSH, null); // 받음 메세지 tts로 출력 (안됨)
}
}public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS) {
int result = mTts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e(TAG, "Language is not available.");
} else {
// mBtnStart.setEnabled(true);
mTts.speak("start",
TextToSpeech.QUEUE_FLUSH, null);
// mBtnStart.setEnabled(false);}
} else {
Log.e(TAG, "Could not initialize TextToSpeech.");
}}
}
온클릭리스너 없이 그냥 바로 재생되게끔하는방법은 없나요??
onInit()오버라이드하고
TextToSpeech 객체 mtts만들고
mTts.speak("start",TextToSpeech.QUEUE_FLUSH, null);써주면 될것 같은데 안되네요




소스가 다 없어서 어떤상황인지 모르겟지만 에러안나나요?
mTts 어디서 생성하나요 생성할때 리스너를 SmsReceiver의 OnInitListener를 사용하는게 맛나요
생성할떄 SmsReceiver의 OnInitListener로 등록햇다면 정상적으로 될텐데요
소스한번 다시 봐보세요 특이사항은 없는데요