From 00589287096dd9fe0a0b448f9e362ec49435a629 Mon Sep 17 00:00:00 2001 From: sspanak Date: Sun, 9 Feb 2025 14:03:26 +0200 Subject: [PATCH] prevented crashing when trying to use an incompatible voice input service/assistant --- .../github/sspanak/tt9/ime/voice/VoiceInputError.java | 4 ++++ .../io/github/sspanak/tt9/ime/voice/VoiceInputOps.java | 10 ++++++++-- app/src/main/res/values-bg/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-iw/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 3 ++- app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-uk/strings.xml | 1 + app/src/main/res/values/strings.xml | 3 ++- 15 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputError.java b/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputError.java index d8aa46dc..0f789b80 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputError.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputError.java @@ -11,6 +11,7 @@ import io.github.sspanak.tt9.R; public class VoiceInputError { public final static int ERROR_NOT_AVAILABLE = 101; public final static int ERROR_INVALID_LANGUAGE = 102; + public final static int ERROR_CANNOT_BIND_TO_VOICE_SERVICE = 103; public final int code; public final String message; @@ -50,6 +51,8 @@ public class VoiceInputError { @NonNull private static String codeToString(Context context, int code) { return switch (code) { + case ERROR_CANNOT_BIND_TO_VOICE_SERVICE + -> context.getString(R.string.voice_input_error_incompatible_voice_service); case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS -> context.getString(R.string.voice_input_error_no_permissions); case SpeechRecognizer.ERROR_LANGUAGE_NOT_SUPPORTED @@ -116,6 +119,7 @@ public class VoiceInputError { case SpeechRecognizer.ERROR_SPEECH_TIMEOUT -> "No speech detected."; case ERROR_NOT_AVAILABLE -> "Voice input is not available."; case ERROR_INVALID_LANGUAGE -> "Invalid language for voice input."; + case ERROR_CANNOT_BIND_TO_VOICE_SERVICE -> "Cannot bind to the current voice input service."; default -> null; }; } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputOps.java b/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputOps.java index 31b57111..1a22e8e9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputOps.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/voice/VoiceInputOps.java @@ -93,8 +93,14 @@ public class VoiceInputOps { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, locale); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, toString()); - speechRecognizer.startListening(intent); - Logger.d(getClass().getSimpleName(), "SpeechRecognizer started for locale: " + locale); + + try { + speechRecognizer.startListening(intent); + Logger.d(getClass().getSimpleName(), "SpeechRecognizer started for locale: " + locale); + } catch (SecurityException e) { + Logger.e(getClass().getSimpleName(), "SpeechRecognizer start failed due to a SecurityException. " + e.getMessage()); + onError(new VoiceInputError(ims, VoiceInputError.ERROR_CANNOT_BIND_TO_VOICE_SERVICE)); + } } diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 04e411c2..81baf396 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -155,6 +155,7 @@ Заглушаване на звук Говорете Трябва да разрешите достъпа до микрофона, за да използвате гласовото въвеждане. + Несъвместим гласов асистент Неуспешно гласово въвеждане Няма достъп до микрофона Езикът не се поддържа diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f09283d8..457ee719 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -144,6 +144,7 @@ Stummschalttaste Sprechen Sie müssen dem Mikrofon die Erlaubnis erteilen, die Spracheingabe zu verwenden. + Inkompatibler Sprachassistent Fehler bei der Spracheingabe Keine Mikrofonberechtigung Sprache nicht unterstützt diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 406b5568..86863bef 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -155,6 +155,7 @@ Botón de silencio Hable Debe otorgar permiso al micrófono para usar la entrada de voz. + Asistente de voz incompatible Error de entrada de voz Sin permiso para el micrófono Idioma no compatible diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e247baa8..f7534fc8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -153,6 +153,7 @@ Muet Parlez Vous devez accorder l\'autorisation au microphone pour utiliser la saisie vocale. + Assistant vocal incompatible Erreur de saisie vocale Pas d\'autorisation pour le microphone Langue non prise en charge diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 9ec0af06..d39fa3a0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -145,6 +145,7 @@ Muto Parli Devi concedere l\'autorizzazione al microfono per utilizzare l\'input vocale. + Assistente vocale incompatibile Errore di input vocale Nessuna autorizzazione per il microfono Lingua non supportata diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 41c7d2a2..046f26e0 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -157,6 +157,7 @@ כפתור השתק האזנה עליך להעניק למיקרופון הרשאה להשתמש בקלט קולי. + עוזר קולי לא תואם שגיאת קלט קולי אין הרשאת מיקרופון השפה אינה נתמכת diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index ebc99a7e..de5b3d8b 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -164,6 +164,7 @@ Nutildymo mygt. Kalbėkite Turite suteikti mikrofonui leidimą naudoti balso įvestį. + Nesuderinamas balso asistentas Balso įvesties klaida Nėra mikrofono leidimo Kalba nepalaikoma diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 275a33c4..30e46a6b 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -144,6 +144,7 @@ Stilteknop Spreek U moet de microfoon toestemming geven om spraakopvoer te gebruiken. + Onverenigbare spraakassistent Fout bij spraakopvoer Geen microfoontoestemming Taal niet ondersteund diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 62ca9d99..a146a552 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -157,6 +157,7 @@ Mudo Fale Você deve conceder permissão ao microfone para usar a entrada de voz. + Assistente de voz incompatível Erro de entrada de voz Sem permissão para o microfone Idioma não suportado diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 1251d1cd..56829187 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -11,7 +11,7 @@ Невозможно добавить слово. Слово «%1$s» уже есть в словаре. Невозможно добавить слово. Неизвестный язык: \"%1$d\". - « %1$s » добавлено + «%1$s» добавлено Добавить слово Выбрать команду О приложении @@ -155,6 +155,7 @@ Выключения звука Говорите Вы должны предоставить микрофону разрешение на использование голосового ввода. + Несовместимый голосовой ассистент Ошибка голосового ввода Нет разрешения на использование микрофона Язык не поддерживается diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 2db6bfeb..e7875627 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -158,6 +158,7 @@ Sessiz tuşu Konuşun Sesli giriş kullanmak için mikrofona izin vermelisiniz. + Uyumsuz sesli asistan Sesli giriş hatası Mikrofon izni yok Dil desteklenmiyor diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 3c88b961..944e8324 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -166,6 +166,7 @@ Вимкнення звуку Диктуйте Ви повинні надати мікрофону дозвіл на використання голосового введення. + Несумісний голосовий асистент Помилка голосового введення Немає дозволу на використання мікрофона Мова не підтримується diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8dc461de..7357e0ba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - https://raw.githubusercontent.com/sspanak/tt9/%1$s/downloads/%2$s + https://raw.githubusercontent.com/sspanak/tt9/%1$s/downloads/%2$s Traditional T9 TT9 TT9 Settings @@ -235,6 +235,7 @@ Speak Turning off the microphone… You must allow the microphone permission to use voice input. + Incompatible voice assistant Voice input error No microphone permission Language not supported