首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextToSpeech OnUtteranceCompletedListener不工作

TextToSpeech OnUtteranceCompletedListener不工作
EN

Stack Overflow用户
提问于 2013-04-21 19:26:37
回答 1查看 1.6K关注 0票数 2

我使用OnUtteranceCompletedListener来检测TTS何时结束说话,但是OnUttereanceCompleted从未被调用过。侦听器是在HashMap之前在onInit中创建的,所以我不知道出了什么问题。有什么想法吗?

代码语言:javascript
复制
    public class TTSActivity extends Activity implements TextToSpeech.OnInitListener, OnUtteranceCompletedListener
{
    private TextToSpeech tts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tts_layout);

        tts = new TextToSpeech(this, this);
    }



    @Override
    public void onDestroy() {
        // Don't forget to shutdown tts!
        if (tts != null) {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
    }

    @Override
    public void onInit(int status) 
    {
        if (status == TextToSpeech.SUCCESS) 
        {
            tts.setOnUtteranceCompletedListener(this);
            int result = tts.setLanguage(Locale.US);

            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Log.e("TTS", "This Language is not supported");
            } else {
                speakOut();
            }
        } else {
            Log.e("TTS", "Initilization Failed!");
        }

    }

    private void speakOut() 
    {
        HashMap<String, String> myHashAlarm = new HashMap<String, String>();
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "FINISHED PLAYING");
    tts.speak("Some text.", TextToSpeech.QUEUE_FLUSH, myHashAlarm);   
  }

    @Override
    public void onUtteranceCompleted(String utteranceId) 
    {
        if(utteranceId=="FINISHED PLAYING")
        {
            Log.i("TTS", "Called");   //never called
        }   
    }
EN

回答 1

Stack Overflow用户

发布于 2013-04-21 20:21:05

让它起作用了。问题出在字符串的比较上。这行代码:

代码语言:javascript
复制
if(utteranceId=="FINISHED PLAYING")

必须更改为:

代码语言:javascript
复制
if(utteranceId.equals("FINISHED PLAYING"))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16130620

复制
相关文章

相似问题

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