2013-10-26 72 views
1

所以我有一個能夠說話的服務。 我也有一個Activity來啓用/禁用服務的發言。說話失敗,不會綁定到TTS引擎(上服務)

問題是,當我在銷燬服務之後啓動服務時,TTS與引擎斷開連接,我該如何重新連接它?

@Override 
public void onStart(Intent intent, int startid) { 

    if (tts == null) { 
     tts = new TextToSpeech(this, this); 
      } 
    } 

和的OnInit

@Override 
public void onInit(int status) { 

    this.status = status; 
    if (this.status == TextToSpeech.SUCCESS) { 

     if (tts == null) { 
      tts = new TextToSpeech(this, this); 
      tts.setSpeechRate(0.8f); 
     } 
     int result = tts.setLanguage(Locale.UK); 

     if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
      Log.e("TTS", "This Language is not supported"); 
      Intent installIntent = new Intent(); 
      installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
      startActivity(installIntent); 
     } 
    } 

} 

的onDestroy

@Override 
public void onDestroy() { 
    if (tts != null) { 
     tts.stop(); 
     tts.shutdown(); 
     Log.d("TAG", "TTS Destroyed"); 
    } 
    super.onDestroy(); 
} 
+0

從'onStart()'中刪除'if'條件並直接初始化它。 – Nizam

+0

我刪除了它,不是這樣 – cesarferreira

回答

0

我會建議增加一些日誌到您的代碼,看看它是失敗的。

首先,可以嘗試在tts = null;tts.shutdown();onDestroy()

如果不工作,檢查狀態onInit。目前你的代碼處理成功,但如果你收到失敗消息,你似乎什麼也不做。

把日誌記錄在OnStartOnInit中,檢查你是否正確地調用了它們 - 這可能是代碼中的某處出現錯誤,你不會在上面詳細說明。

相關問題