Итак, у меня есть активность в моем приложении для Android, которое запускается при запуске.Это действие - просто страница с кнопкой запуска.Когда я нажимаю кнопку «Пуск», она вызывает другое действие и закрывается:
Intent i = new Intent(this, Dictating.class);
startActivity(i);
finish();
Другое действие использует текст в речь, чтобы диктовать некоторые слова.Теперь у меня происходит нечто странное:
1) Я слушаю диктовку.2) Я нажимаю кнопку «назад»: диктует остановки (что я хочу)3) Я снова запускаю приложение, нажимаю кнопку запуска.Теперь у меня есть новое действие, которое запускает и диктует, но сзади я слышу старое действие, которое возобновилось там, где оно было, и продолжает диктовать.
Я бы хотел, чтобы новое занятие начиналось заново, а другое занятие не сохранялось.Как я могу это сделать ?PS: Это проблема активности, а не проблема преобразования текста в речь, так как я каждый раз сбрасываю текст в речь. Она не может быть сохранена в памяти
Спасибо
РЕДАКТИРОВАТЬ:
Вот onCreate моего класса Dictating, в этом классе есть тонны кода, я, очевидно, не хочу публиковать весь свой код, поэтому вот некоторые части:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.streaming);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
this.txtCurrentWord = (TextView) findViewById(R.id.txtCurrentWord);
this.btnPlayPause = findViewById(R.id.btnPlayPause);
this.btnPlayPause.setOnClickListener(this);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
this.tts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
Есть несколько странных вещей, которые я делаю, например:
Runnable task = new Runnable() {
public void run() {
//runs on ui
runOnUiThread(new Runnable() {
public void run() {
readNextWord();
}
});
}
};
worker.schedule(task, 1, TimeUnit.SECONDS);
это задерживает следующее слово на одну секунду, а затем выполняет функцию в основном потоке пользовательского интерфейса.не уверен, если это имеет значение
и некоторые промывки в конце:
@Override
public void onDestroy() {
tts.shutdown();
super.onDestroy();
}