0

我如何在班级中实际创建和开始新班级?

例如,我有 2 节课。AppsUtil.java 和 TTSClass.java。

从我的 MainActivity,我打电话给

new AppsUtil(MainActivity.this)

在 AppsUtil.class 中

public AppsUtil(Context context) {
    this.c = context;
    ttsInstance = new TTSClass(c);
}

如您所见,我的 AppsUtil.java 创建了一个新的 TTSClass 对象。

public TTSClass(Context context) {
    this.c = context;
    this.mTts = new TextToSpeech(c, TTSClass.this);
}

这样做没有问题,使用时没有logcat错误或消息。但是,调用时 TTS 服务不说话。

这有什么问题吗?

编辑:

TTS类

public class TTSClass implements OnInitListener {
    String TAG = "TTSClass";
    Context c;
    TextToSpeech mTts;
    boolean ttsInitialise = false;

    public TTSClass(Context context) {
        this.c = context;
    }

    public void create() {
        Log.e(TAG, "New TTS Created");
        this.mTts = new TextToSpeech(c, TTSClass.this);
    }

    @Override
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {
            // Set preferred language to US english.
            // Note that a language may not be available, and the result will
            // indicate this.
            Log.e("SUCCESS", "SUCCESS");
            int result = this.mTts.setLanguage(Locale.getDefault());

            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                // Lanuage data is missing or the language is not supported.
                Log.e("404", "Language is not available.");
            }
            Log.e("SUCCESS", "SUPPORTED LETS GO");
            ttsInitialise = true;
        } else {
            // Initialization failed.
            Log.e("404", "Could not initialize TextToSpeech.");
            // May be its not installed so we prompt it to be installed
            Intent installIntent = new Intent();
            installIntent
                    .setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            c.startActivity(installIntent);
        }

    }

    public void speak(String textToSpeak) {
        if (this.mTts == null || !ttsInitialise) {
            Log.e(TAG, "LOL NO");
            return;
        }
        this.mTts.speak(textToSpeak, TextToSpeech.QUEUE_ADD, null);
    }
}
4

0 回答 0