Android SetOnPatternanceProgressListener()不总是工作

Android SetOnPatternanceProgressListener()不总是工作,android,Android,在从事TextToSpeech项目期间,我经历了以下几点: 如果我使用speak(CharSequence text、int-queueMode、Bundle参数、String-outtanceid)来讲文本,那么话语监听器会按预期工作 如果我使用addSpeech(String text,String packagename,int resourceId)添加了映射,然后使用speak(CharSequence text,int queueMode,Bundle params,String

在从事TextToSpeech项目期间,我经历了以下几点:

  • 如果我使用
    speak(CharSequence text、int-queueMode、Bundle参数、String-outtanceid)
    来讲文本,那么话语监听器会按预期工作

  • 如果我使用
    addSpeech(String text,String packagename,int resourceId)
    添加了映射,然后使用
    speak(CharSequence text,int queueMode,Bundle params,String outtanceid)
    ,映射可以工作(声音播放),但不会调用话语侦听器方法

  • 如果我使用
    addEarcon(String earcon,String packagename,int resourceId)
    ,然后使用
    playEarcon(String earcon,int queueMode,Bundle params,String outtanceid)
    ,映射工作(声音播放),但不会调用话语侦听器方法

  • 如果我使用
    playsilentutrance(长持续时间nms,int-queueMode,String-outranceid)
    ,那么话语监听器会按预期工作

  • 2和3中的问题通过使用API级别21中不推荐的方法来解决,例如使用:

    HashMap params=新的HashMap(); 参数put(TextToSpeech.Engine.KEY_参数_话语_ID,字符串键);(已弃用)

  • 如果是2号:

    addSpeech(String text, String packagename, int resourceId);
    
    然后

    speak(String text, int queueMode, HashMap<String, String> params);  (deprecated method)
    
    playEarcon(String earcon, int queueMode, HashMap<String, String> params);  (deprecated method)
    
    然后

    speak(String text, int queueMode, HashMap<String, String> params);  (deprecated method)
    
    playEarcon(String earcon, int queueMode, HashMap<String, String> params);  (deprecated method)
    
    playEarcon(字符串earcon、int-queueMode、HashMap参数);(不推荐使用的方法)
    

    以前有人经历过这种情况吗?

    是的,这是不同情况下的情况,可能会混淆其他用户,建议他们调整初始化顺序

    用户必须为UtteranceProgressListener创建要跟踪的参数