Уважаемые, у меня есть Text-To-Speech, реализованный службой в java android, у меня есть журналы во всех этих методах с Log.i, но ни один из этих методов не вызывается, когда я проверяю Logcat (onDone , onError, onStart), мне нужно знать, когда Text-to-speech имеет fini sh для вызова другой функции, это служебный код, это что-то не так?
public class TTSService extends Service implements TextToSpeech.OnInitListener {
public static final String EXTRA_TEXT_TO_READ = "sin texto";
private TextToSpeech tts;
private String word;
private boolean isInit;
private Handler handler;
Locale locale = new Locale("es", "ES");
private String TAG = "MY_SERVICE";
@Override
public void onCreate() {
try{
super.onCreate();
tts = new TextToSpeech(getApplicationContext(), this);
handler = new Handler();
}catch (Exception e){
Log.i(TAG, "catch onCreate");
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
try{
handler.removeCallbacksAndMessages(null);
word = intent.getStringExtra(TTSService.EXTRA_TEXT_TO_READ);
if (isInit) {
speak();
}
/* handler.postDelayed(new Runnable() {
@Override
public void run() {
stopSelf();
}
}, 90*1000);*/
return TTSService.START_NOT_STICKY;
}catch (Exception e){
Log.i(TAG, "catch onStartCommand");
return TTSService.START_NOT_STICKY;
}
}
@Override
public void onDestroy() {
if (tts != null) {
Log.i(TAG,"OnDestroy");
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onInit(int status) {
try{
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(locale);
if (result != TextToSpeech.LANG_MISSING_DATA && result != TextToSpeech.LANG_NOT_SUPPORTED) {
speak();
isInit = true;
}
tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onDone(String utteranceId) {
Log.i(TAG, "Done");
}
@Override
public void onError(String utteranceId) {
Log.i(TAG, "onError");
}
@Override
public void onStart(String utteranceId) {
Log.i(TAG, "onStart");
}
});
}
}catch (Exception e){
Log.i(TAG, "catch onInit");
}
}
private void speak() {
try{
if (tts != null) {
tts.speak(word, TextToSpeech.QUEUE_FLUSH, null);
}
}catch (Exception e){
Log.i(TAG, "catch speak");
}
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}