【问题标题】:How to get OnUtteranceCompleted to be called?如何让 OnUtteranceCompleted 被调用?
【发布时间】:2011-09-28 11:02:09
【问题描述】:

我一直在网上冲浪(阅读 google/android 开发者文档,阅读 stackoverflow 的类似问题,阅读书籍)并密切关注示例。文本到语音的“说话”效果很好。但我就是无法调用 OnUtteranceCompleted。

它一定很简单,以至于我没有看到答案。请帮忙!这是我经过几次交互后的代码。

或者有人可以提供一个完整的源代码(不是 sn-ps),看看它是否可以在我的模拟器/实际设备上运行?

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();
 }

【问题讨论】:

    标签: android onutterancecompleted


    【解决方案1】:

    您是否在 setOnUtteranceCompletedListener 调用后检查了 int 结果的值。

    if(result == TextToSpeech.ERROR)
    

    然后未设置语音侦听器

    【讨论】:

    • 结果等于 TextToSpeech.SUCCESS。所以成功调用了setOnUtteranceCompletedListener。但是,OnUtteranceCompleted 仍然不起作用
    【解决方案2】:

    您的代码可能应该如下所示:

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

    你也应该看看this 的文章,里面有关于onUtteranceCompleted 工作原理的清晰描述。希望这会有所帮助。

    【讨论】:

    • 之前试了又试了。未调用 onUtteranceCompleted
    • 经过多次试验和错误,我设法让它工作。请参阅this。并确保将所有代码放在 //UI Changes 中。否则,某些功能将不起作用,例如吐司
    猜你喜欢
    • 1970-01-01
    • 2011-06-06
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    相关资源
    最近更新 更多