2011-09-27 49 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

相关问题