首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TTS和播放声音- Android

TTS和播放声音- Android
EN

Stack Overflow用户
提问于 2013-05-13 01:50:01
回答 2查看 1.5K关注 0票数 1

我的应用程序中有一个viewpager。当用户向右/向左滑动时,我使用TTS引擎朗读文本,使用MediaPlayer播放声音。

问题是这两个游戏同时进行..当TTS引擎说出文本结束后,我如何播放声音?

附言:我不想使用睡眠或等待。

更新:

下面是我的代码:

代码语言:javascript
复制
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
@Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {

        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
        } else {
            //Do Something here
        }


        if(Build.VERSION.SDK_INT  >= 15 ){
            UtteranceProgressListener listener = new UtteranceProgressListener() {

                @Override
                public void onStart(String utteranceId) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onError(String utteranceId) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onDone(String utteranceId) {
                    // TODO Auto-generated method stub
                    //start MediaPlayer
                    playMedia(viewPager.getCurrentItem());
                }
            };
            tts.setOnUtteranceProgressListener(listener);
        }
        else{
            tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener(){

                @Override
                public void onUtteranceCompleted(String arg0) {
                     playMedia(viewPager.getCurrentItem());
                }

              });
        }
    } else {
        Intent installIntent = new Intent();
        installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
        startActivity(installIntent);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-06-05 14:41:05

你必须给它一个id参数。否则它不会调用监听器:

代码语言:javascript
复制
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"stringId");

textToSpeech.speak(string,TextToSpeech.QUEUE_ADD, params);
票数 6
EN

Stack Overflow用户

发布于 2013-05-13 02:01:31

在安卓中,他们有两个API来检测TTS引擎是否说完了话:

  • >安卓4 (ICS)

UtteranceProgressListener listener = new UtteranceProgressListener() { @Override public void onStart(String utteranceId) { // TODO自动生成的方法存根} @Override公共空onError(String utteranceId) { // TODO自动生成的方法存根} @Override公共空onDone(String utteranceId) { // TODO自动生成的方法存根//启动MediaPlayer } };你可以使用

  • Perior到ICS Android4.0

yourTTSObject.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener(){ @Override public void onUtteranceCompleted(String arg0) { //在这里启动您的媒体播放器} });

看看documentations here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16510355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档