2011-09-27 85 views
0

我一直在網上衝浪(閱讀google/android開發人員文檔,閱讀stackoverflow的類似問題,閱讀本書),並非常仔細地遵循這些示例。 Text-to-Speech「speak」很棒。但我無法讓OnUtterance完成被調用。如何獲得OnUtterance完成被調用?

它一定很簡單,我沒有看到答案。請幫忙!這是我的代碼在幾次交互之後。

或者有人可以提供一個完整的源代碼(而不是片段),它可以真實地檢查它是否可以在我的模擬器/實際設備上運行?

public class testActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener { 
... 

protected void checkTtS() { 
    Intent checkIntent = new Intent(); 
    checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
    startActivityForResult(checkIntent, TTS_DATA_CHECK_CODE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
.... 
    if (requestCode == TTS_DATA_CHECK_CODE) { 
     if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
     // success, create the TTS instance 
     mTts = new TextToSpeech(this, this); 
.... 

// Implements TextToSpeech.OnInitListener. 
public void onInit(int status) { 

    // status can be either TextToSpeech.SUCCESS or TextToSpeech.ERROR. 
    if (status == TextToSpeech.SUCCESS) { 
     int result = mTts.setLanguage(Locale.FRANCE); 
     result = mTts.setOnUtteranceCompletedListener(this); 
     HashMap<String, String> params = new HashMap<String, String>(); 
     params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"stringId"); 
     mTts.speak("Text to Speak",TextToSpeech.QUEUE_FLUSH, params); 
.... 

public void onUtteranceCompleted(String uttId) { 
    Toast.makeText(getBaseContext(), "onutterancecompleted", Toast.LENGTH_SHORT).show(); 
} 

回答

0

您是否在setOnUtteranceCompletedListener調用後檢查了int結果的值。

if(result == TextToSpeech.ERROR) 

然後話語監聽器沒有設置

+0

結果等於TextToSpeech.SUCCESS。所以setOnUtteranceCompletedListener被成功調用。但是,OnUtterance完成仍然不起作用 – mmmmm5

-1

你的代碼也許應該是這樣的:

public void onUtteranceCompleted(String uttId) { 
    if (uttId.equals("stringId")) { 
     Toast.makeText(getBaseContext(), "onutterancecompleted", Toast.LENGTH_SHORT).show(); 
    } 
} 

而且你還要看看this文章,有一個如何的清晰描述onUtteranceCompleted工程。希望這可以幫助。

+0

之前嘗試過,並再次嘗試。 onUtteranceCompleted不叫 – mmmmm5

+2

經過多次試驗和錯誤,我設法讓它工作。參考[this](http://stackoverflow.com/questions/6645893/onutterancecompleted-does-not-get-called)。確保將所有代碼放在// UI更改中。否則,某些功能不起作用,例如吐司 – mmmmm5

+0

@ mmmmm5,很高興你的工作! – Egor

相關問題