From 15b0289fd572214446c3b3213d183ab6965f065e Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 27 Aug 2024 10:31:30 +0200 Subject: [PATCH] Allow cancelling TTS --- app/src/main/java/eu/faircode/email/EntityRule.java | 2 +- .../main/java/eu/faircode/email/FragmentMessages.java | 10 +++++++++- app/src/main/java/eu/faircode/email/TTSHelper.java | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index 464d4bd25f..dab0ffc9ba 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -1315,7 +1315,7 @@ public class EntityRule { sb.append(context.getString(R.string.title_rule_tts_content)) .append(' ').append(preview); - TTSHelper.speak(context, "rule:" + message.id, sb.toString(), message.language); + TTSHelper.speak(context, "rule:" + message.id, sb.toString(), message.language, false); } private boolean onActionSnooze(Context context, EntityMessage message, JSONObject jargs) throws JSONException { diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index bfbf850318..37d4b27b4c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -3635,6 +3635,14 @@ public class FragmentMessages extends FragmentBase } private void onSwipeTTS(final @NonNull TupleMessageEx message) { + boolean tts = iProperties.getValue("tts", message.id, false); + iProperties.setValue("tts", message.id, !tts); + + if (tts) { + TTSHelper.speak(getContext(), "tts:" + message.id, "", message.language, true); + return; + } + Bundle args = new Bundle(); args.putLong("id", message.id); @@ -3671,7 +3679,7 @@ public class FragmentMessages extends FragmentBase @Override protected void onExecuted(Bundle args, String text) { if (text != null) - TTSHelper.speak(getContext(), "tts:" + message.id, text, message.language); + TTSHelper.speak(getContext(), "tts:" + message.id, text, message.language, true); } @Override diff --git a/app/src/main/java/eu/faircode/email/TTSHelper.java b/app/src/main/java/eu/faircode/email/TTSHelper.java index d0f6731a7a..c4c59bb9bf 100644 --- a/app/src/main/java/eu/faircode/email/TTSHelper.java +++ b/app/src/main/java/eu/faircode/email/TTSHelper.java @@ -41,7 +41,8 @@ public class TTSHelper { @NonNull final Context context, @NonNull final String utteranceId, @NonNull final String text, - final String language) { + final String language, + final boolean flush) { Locale locale = (language == null ? Locale.getDefault() : new Locale(language)); @@ -55,7 +56,7 @@ public class TTSHelper { " available=" + available + " utterance=" + utteranceId + " text=" + text); - instance.speak(text, TextToSpeech.QUEUE_ADD, null, utteranceId); + instance.speak(text, flush ? TextToSpeech.QUEUE_FLUSH : TextToSpeech.QUEUE_ADD, null, utteranceId); } catch (Throwable ex) { Log.e(ex); }