У меня есть приложение, использующее TTS очень сильно. Работает нормально, но мне нужно его настроить.
Я использую объект TTS на каждом экране, и это не хорошо. Я хотел бы создать объект TTS только один раз (например, Singleton) и использовать его на протяжении всей своей деятельности.
Вот базовый код для этой работы:
public class SimOuNaoActivity extends Activity implements OnInitListener{
public TextToSpeech tts;
private int MY_DATA_CHECK_CODE = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
tts.speak("Testing 1,2,3", TextToSpeech.QUEUE_ADD, null);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
tts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent
.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
// Toast.LENGTH_LONG).show();
} else if (status == TextToSpeech.ERROR) {
// Toast.LENGTH_LONG).show();
}
}
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
System.gc();
}
}
Как правильно использовать объект TTS во всех моих действиях? Имейте в виду, что он использует некоторые методы, такие как startActivityForResult и т. Д., Поэтому ... я хотел бы знать, что я могу сделать, чтобы эта работа работала нормально.
Кто-нибудь может мне помочь, пожалуйста?
Любая помощь приветствуется!
Спасибо!