UtteranceProgressListener(TTS)无法正常工作或未被调用(Android 4.4.2)

时间:2014-08-02 22:58:41

标签: java android listener text-to-speech

从2天开始,我试图让UtteranceProgressListener工作。我一直在尝试从Stackoverflow和其他一些网站获取大量代码 - 对我来说没什么用。这是我目前的代码:

这是我激活文字转语音的方法。它被称为onCreate。

private void activateTTS() {
    tts=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {

        @Override
        public void onInit(int status) {
            if (status == TextToSpeech.SUCCESS) {
                int result=tts.setLanguage(Locale.getDefault());
                if (result==TextToSpeech.LANG_MISSING_DATA ||
                        result==TextToSpeech.LANG_NOT_SUPPORTED) {
                }
                tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                    @Override 
                    public void onDone(String utteranceId) {
                        if (utteranceId == "myId") {
                            //[...] all my code that is not being called
                            //when speaking is finished
                        }
                    } 

                    @Override 
                    public void onError(String utteranceId) {
                    } 

                    @Override 
                    public void onStart(String utteranceId) {
                    } 
                });
            }
        }
    });
}

我知道需要一个带有utteranceId的HashMap来识别话语。这是我的代码(只是方法的一部分):

params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "myId");
tts.speak(myString, TextToSpeech.QUEUE_FLUSH, params);

我的重要变量(对于tts和HashMap)是:

private static TextToSpeech tts;
private HashMap<String, String> params;

任何代码都是我班级的一部分&#34; TTSPlayer&#34;它扩展了MainActivity但没有实现任何东西:

public class TTSPlayer extends MainActivity {
//[all my code]
}

编辑:这是我的manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.saschaha.readit"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:name="com.saschaha.readit.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.saschaha.readit.TTSPlayer"
        android:label="@string/ReadIt" >
    </activity>
</application>
</manifest>

tts工作正常(文字正在说话)但是UtteranceProgressListener不起作用(我的代码没有被调用)。我不知道为什么。有帮助吗? 非常感谢!!

1 个答案:

答案 0 :(得分:0)

错误在于字符串比较

if (utteranceId == "myId")  

将其更改为

if ("myId".equals(utteranceId))