Итак, у меня есть приложение, подключенное к firebase. Приложение извлекает данные (строку) из firebase в текстовое представление, а затем функция TextToSpeech считывает текст (не из textView, но сама получает те же данные из базы данных в реальном времени firebase). Я использовал метод onDataChange (), чтобы функция texttospeech считывала текст, как только в Firebase происходит какое-либо изменение данных, а не по нажатию какой-либо кнопки. Теперь я хочу поместить кнопку переключения в свое приложение и использовать ее, чтобы включить или выключить функцию tts, но я не могу заставить ее работать. Когда кнопка переключения выключена, я хочу, чтобы функция texttospeech остановилась, а когда состояние кнопки включено, я хочу, чтобы функция texttospeech снова включилась. Вот что я попробовал:
mtts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status != TextToSpeech.ERROR){
mtts.setLanguage(Locale.US); }else{
Toast.makeText(MainActivity.this, "Couldnt initialize speech function!", Toast.LENGTH_SHORT).show();
}
}
}); mIvToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
reff = FirebaseDatabase.getInstance().getReference().child("Match").child("Screen1");
reff.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String tts= dataSnapshot.getValue().toString();
mtts.speak(tts, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}else{
mtts.stop();
mtts.shutdown();
}
}
});
TIA!