package com.anyun.exam.lib.util; import android.content.Context; import android.speech.tts.TextToSpeech; import android.speech.tts.UtteranceProgressListener; import android.util.Log; import com.anyun.exam.lib.RemoteService; import java.util.Locale; public class Speaker { private Context context; private TextToSpeech tts; private SpeakerCallback callback = null; final public String TAG = Speaker.class.getCanonicalName(); public Speaker(final Context context, final SpeakerCallback cb) { // TODO Auto-generated constructor stub Log.d(TAG, "Speaker Init..."); this.context = context; this.callback = cb; tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { Log.d(TAG, "onInit TextToSpeech.SUCCESS"); // TODO Auto-generated method stub if (status == TextToSpeech.SUCCESS) { Log.d(TAG, "TextToSpeech.SUCCESS"); int result = tts.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.d(TAG, "TextToSpeech.LANG_NOT_SUPPORTED"); } if (callback != null) { callback.PlayInit(true); } } } }); tts.setOnUtteranceProgressListener(new UtteranceProgressListener() { @Override public void onStart(String s) { if (callback != null) { callback.PlayStart(s); } } @Override public void onDone(String s) { if (callback != null) { callback.PlayDone(s); } } @Override public void onError(String s) { if (callback != null) { callback.PlayError(s); } } }); } public void speak(String text, String id) { // tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); tts.speak(text, TextToSpeech.QUEUE_ADD, null, id); } public void speak(String text) { // tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); tts.speak(text, TextToSpeech.QUEUE_ADD, null, "talk"); } }