我如何在班级中实际创建和开始新班级?
例如,我有 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);
}
}