1
0
Fork 0

prevented crashing when trying to use an incompatible voice input service/assistant

This commit is contained in:
sspanak 2025-02-09 14:03:26 +02:00 committed by Dimo Karaivanov
parent f4ec96b9c8
commit 0058928709
15 changed files with 27 additions and 4 deletions

View file

@ -11,6 +11,7 @@ import io.github.sspanak.tt9.R;
public class VoiceInputError { public class VoiceInputError {
public final static int ERROR_NOT_AVAILABLE = 101; public final static int ERROR_NOT_AVAILABLE = 101;
public final static int ERROR_INVALID_LANGUAGE = 102; 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 int code;
public final String message; public final String message;
@ -50,6 +51,8 @@ public class VoiceInputError {
@NonNull @NonNull
private static String codeToString(Context context, int code) { private static String codeToString(Context context, int code) {
return switch (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 case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS
-> context.getString(R.string.voice_input_error_no_permissions); -> context.getString(R.string.voice_input_error_no_permissions);
case SpeechRecognizer.ERROR_LANGUAGE_NOT_SUPPORTED case SpeechRecognizer.ERROR_LANGUAGE_NOT_SUPPORTED
@ -116,6 +119,7 @@ public class VoiceInputError {
case SpeechRecognizer.ERROR_SPEECH_TIMEOUT -> "No speech detected."; case SpeechRecognizer.ERROR_SPEECH_TIMEOUT -> "No speech detected.";
case ERROR_NOT_AVAILABLE -> "Voice input is not available."; case ERROR_NOT_AVAILABLE -> "Voice input is not available.";
case ERROR_INVALID_LANGUAGE -> "Invalid language for voice input."; 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; default -> null;
}; };
} }

View file

@ -93,8 +93,14 @@ public class VoiceInputOps {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, locale); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, locale);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, toString()); 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));
}
} }

View file

@ -155,6 +155,7 @@
<string name="key_volume_mute">Заглушаване на звук</string> <string name="key_volume_mute">Заглушаване на звук</string>
<string name="voice_input_listening">Говорете</string> <string name="voice_input_listening">Говорете</string>
<string name="voice_input_mic_permission_is_needed">Трябва да разрешите достъпа до микрофона, за да използвате гласовото въвеждане.</string> <string name="voice_input_mic_permission_is_needed">Трябва да разрешите достъпа до микрофона, за да използвате гласовото въвеждане.</string>
<string name="voice_input_error_incompatible_voice_service">Несъвместим гласов асистент</string>
<string name="voice_input_error_generic">Неуспешно гласово въвеждане</string> <string name="voice_input_error_generic">Неуспешно гласово въвеждане</string>
<string name="voice_input_error_no_permissions">Няма достъп до микрофона</string> <string name="voice_input_error_no_permissions">Няма достъп до микрофона</string>
<string name="voice_input_error_language_not_supported">Езикът не се поддържа</string> <string name="voice_input_error_language_not_supported">Езикът не се поддържа</string>

View file

@ -144,6 +144,7 @@
<string name="key_volume_mute">Stummschalttaste</string> <string name="key_volume_mute">Stummschalttaste</string>
<string name="voice_input_listening">Sprechen</string> <string name="voice_input_listening">Sprechen</string>
<string name="voice_input_mic_permission_is_needed">Sie müssen dem Mikrofon die Erlaubnis erteilen, die Spracheingabe zu verwenden.</string> <string name="voice_input_mic_permission_is_needed">Sie müssen dem Mikrofon die Erlaubnis erteilen, die Spracheingabe zu verwenden.</string>
<string name="voice_input_error_incompatible_voice_service">Inkompatibler Sprachassistent</string>
<string name="voice_input_error_generic">Fehler bei der Spracheingabe</string> <string name="voice_input_error_generic">Fehler bei der Spracheingabe</string>
<string name="voice_input_error_no_permissions">Keine Mikrofonberechtigung</string> <string name="voice_input_error_no_permissions">Keine Mikrofonberechtigung</string>
<string name="voice_input_error_language_not_supported">Sprache nicht unterstützt</string> <string name="voice_input_error_language_not_supported">Sprache nicht unterstützt</string>

View file

@ -155,6 +155,7 @@
<string name="key_volume_mute">Botón de silencio</string> <string name="key_volume_mute">Botón de silencio</string>
<string name="voice_input_listening">Hable</string> <string name="voice_input_listening">Hable</string>
<string name="voice_input_mic_permission_is_needed">Debe otorgar permiso al micrófono para usar la entrada de voz.</string> <string name="voice_input_mic_permission_is_needed">Debe otorgar permiso al micrófono para usar la entrada de voz.</string>
<string name="voice_input_error_incompatible_voice_service">Asistente de voz incompatible</string>
<string name="voice_input_error_generic">Error de entrada de voz</string> <string name="voice_input_error_generic">Error de entrada de voz</string>
<string name="voice_input_error_no_permissions">Sin permiso para el micrófono</string> <string name="voice_input_error_no_permissions">Sin permiso para el micrófono</string>
<string name="voice_input_error_language_not_supported">Idioma no compatible</string> <string name="voice_input_error_language_not_supported">Idioma no compatible</string>

View file

@ -153,6 +153,7 @@
<string name="key_volume_mute">Muet</string> <string name="key_volume_mute">Muet</string>
<string name="voice_input_listening">Parlez</string> <string name="voice_input_listening">Parlez</string>
<string name="voice_input_mic_permission_is_needed">Vous devez accorder l\'autorisation au microphone pour utiliser la saisie vocale.</string> <string name="voice_input_mic_permission_is_needed">Vous devez accorder l\'autorisation au microphone pour utiliser la saisie vocale.</string>
<string name="voice_input_error_incompatible_voice_service">Assistant vocal incompatible</string>
<string name="voice_input_error_generic">Erreur de saisie vocale</string> <string name="voice_input_error_generic">Erreur de saisie vocale</string>
<string name="voice_input_error_no_permissions">Pas d\'autorisation pour le microphone</string> <string name="voice_input_error_no_permissions">Pas d\'autorisation pour le microphone</string>
<string name="voice_input_error_language_not_supported">Langue non prise en charge</string> <string name="voice_input_error_language_not_supported">Langue non prise en charge</string>

View file

@ -145,6 +145,7 @@
<string name="key_volume_mute">Muto</string> <string name="key_volume_mute">Muto</string>
<string name="voice_input_listening">Parli</string> <string name="voice_input_listening">Parli</string>
<string name="voice_input_mic_permission_is_needed">Devi concedere l\'autorizzazione al microfono per utilizzare l\'input vocale.</string> <string name="voice_input_mic_permission_is_needed">Devi concedere l\'autorizzazione al microfono per utilizzare l\'input vocale.</string>
<string name="voice_input_error_incompatible_voice_service">Assistente vocale incompatibile</string>
<string name="voice_input_error_generic">Errore di input vocale</string> <string name="voice_input_error_generic">Errore di input vocale</string>
<string name="voice_input_error_no_permissions">Nessuna autorizzazione per il microfono</string> <string name="voice_input_error_no_permissions">Nessuna autorizzazione per il microfono</string>
<string name="voice_input_error_language_not_supported">Lingua non supportata</string> <string name="voice_input_error_language_not_supported">Lingua non supportata</string>

View file

@ -157,6 +157,7 @@
<string name="key_volume_mute">כפתור השתק</string> <string name="key_volume_mute">כפתור השתק</string>
<string name="voice_input_listening">האזנה</string> <string name="voice_input_listening">האזנה</string>
<string name="voice_input_mic_permission_is_needed">עליך להעניק למיקרופון הרשאה להשתמש בקלט קולי.</string> <string name="voice_input_mic_permission_is_needed">עליך להעניק למיקרופון הרשאה להשתמש בקלט קולי.</string>
<string name="voice_input_error_incompatible_voice_service">עוזר קולי לא תואם</string>
<string name="voice_input_error_generic">שגיאת קלט קולי</string> <string name="voice_input_error_generic">שגיאת קלט קולי</string>
<string name="voice_input_error_no_permissions">אין הרשאת מיקרופון</string> <string name="voice_input_error_no_permissions">אין הרשאת מיקרופון</string>
<string name="voice_input_error_language_not_supported">השפה אינה נתמכת</string> <string name="voice_input_error_language_not_supported">השפה אינה נתמכת</string>

View file

@ -164,6 +164,7 @@
<string name="key_volume_mute">Nutildymo mygt.</string> <string name="key_volume_mute">Nutildymo mygt.</string>
<string name="voice_input_listening">Kalbėkite</string> <string name="voice_input_listening">Kalbėkite</string>
<string name="voice_input_mic_permission_is_needed">Turite suteikti mikrofonui leidimą naudoti balso įvestį.</string> <string name="voice_input_mic_permission_is_needed">Turite suteikti mikrofonui leidimą naudoti balso įvestį.</string>
<string name="voice_input_error_incompatible_voice_service">Nesuderinamas balso asistentas</string>
<string name="voice_input_error_generic">Balso įvesties klaida</string> <string name="voice_input_error_generic">Balso įvesties klaida</string>
<string name="voice_input_error_no_permissions">Nėra mikrofono leidimo</string> <string name="voice_input_error_no_permissions">Nėra mikrofono leidimo</string>
<string name="voice_input_error_language_not_supported">Kalba nepalaikoma</string> <string name="voice_input_error_language_not_supported">Kalba nepalaikoma</string>

View file

@ -144,6 +144,7 @@
<string name="key_volume_mute">Stilteknop</string> <string name="key_volume_mute">Stilteknop</string>
<string name="voice_input_listening">Spreek</string> <string name="voice_input_listening">Spreek</string>
<string name="voice_input_mic_permission_is_needed">U moet de microfoon toestemming geven om spraakopvoer te gebruiken.</string> <string name="voice_input_mic_permission_is_needed">U moet de microfoon toestemming geven om spraakopvoer te gebruiken.</string>
<string name="voice_input_error_incompatible_voice_service">Onverenigbare spraakassistent</string>
<string name="voice_input_error_generic">Fout bij spraakopvoer</string> <string name="voice_input_error_generic">Fout bij spraakopvoer</string>
<string name="voice_input_error_no_permissions">Geen microfoontoestemming</string> <string name="voice_input_error_no_permissions">Geen microfoontoestemming</string>
<string name="voice_input_error_language_not_supported">Taal niet ondersteund</string> <string name="voice_input_error_language_not_supported">Taal niet ondersteund</string>

View file

@ -157,6 +157,7 @@
<string name="key_volume_mute">Mudo</string> <string name="key_volume_mute">Mudo</string>
<string name="voice_input_listening">Fale</string> <string name="voice_input_listening">Fale</string>
<string name="voice_input_mic_permission_is_needed">Você deve conceder permissão ao microfone para usar a entrada de voz.</string> <string name="voice_input_mic_permission_is_needed">Você deve conceder permissão ao microfone para usar a entrada de voz.</string>
<string name="voice_input_error_incompatible_voice_service">Assistente de voz incompatível</string>
<string name="voice_input_error_generic">Erro de entrada de voz</string> <string name="voice_input_error_generic">Erro de entrada de voz</string>
<string name="voice_input_error_no_permissions">Sem permissão para o microfone</string> <string name="voice_input_error_no_permissions">Sem permissão para o microfone</string>
<string name="voice_input_error_language_not_supported">Idioma não suportado</string> <string name="voice_input_error_language_not_supported">Idioma não suportado</string>

View file

@ -11,7 +11,7 @@
<string name="add_word_blank">Невозможно добавить слово.</string> <string name="add_word_blank">Невозможно добавить слово.</string>
<string name="add_word_exist">Слово «%1$s» уже есть в словаре.</string> <string name="add_word_exist">Слово «%1$s» уже есть в словаре.</string>
<string name="add_word_invalid_language_x">Невозможно добавить слово. Неизвестный язык: \"%1$d\".</string> <string name="add_word_invalid_language_x">Невозможно добавить слово. Неизвестный язык: \"%1$d\".</string>
<string name="add_word_success">« %1$s » добавлено</string> <string name="add_word_success">«%1$s» добавлено</string>
<string name="add_word_title">Добавить слово</string> <string name="add_word_title">Добавить слово</string>
<string name="commands_select_command">Выбрать команду</string> <string name="commands_select_command">Выбрать команду</string>
<string name="pref_category_about">О приложении</string> <string name="pref_category_about">О приложении</string>
@ -155,6 +155,7 @@
<string name="key_volume_mute">Выключения звука</string> <string name="key_volume_mute">Выключения звука</string>
<string name="voice_input_listening">Говорите</string> <string name="voice_input_listening">Говорите</string>
<string name="voice_input_mic_permission_is_needed">Вы должны предоставить микрофону разрешение на использование голосового ввода.</string> <string name="voice_input_mic_permission_is_needed">Вы должны предоставить микрофону разрешение на использование голосового ввода.</string>
<string name="voice_input_error_incompatible_voice_service">Несовместимый голосовой ассистент</string>
<string name="voice_input_error_generic">Ошибка голосового ввода</string> <string name="voice_input_error_generic">Ошибка голосового ввода</string>
<string name="voice_input_error_no_permissions">Нет разрешения на использование микрофона</string> <string name="voice_input_error_no_permissions">Нет разрешения на использование микрофона</string>
<string name="voice_input_error_language_not_supported">Язык не поддерживается</string> <string name="voice_input_error_language_not_supported">Язык не поддерживается</string>

View file

@ -158,6 +158,7 @@
<string name="key_volume_mute">Sessiz tuşu</string> <string name="key_volume_mute">Sessiz tuşu</string>
<string name="voice_input_listening">Konuşun</string> <string name="voice_input_listening">Konuşun</string>
<string name="voice_input_mic_permission_is_needed">Sesli giriş kullanmak için mikrofona izin vermelisiniz.</string> <string name="voice_input_mic_permission_is_needed">Sesli giriş kullanmak için mikrofona izin vermelisiniz.</string>
<string name="voice_input_error_incompatible_voice_service">Uyumsuz sesli asistan</string>
<string name="voice_input_error_generic">Sesli giriş hatası</string> <string name="voice_input_error_generic">Sesli giriş hatası</string>
<string name="voice_input_error_no_permissions">Mikrofon izni yok</string> <string name="voice_input_error_no_permissions">Mikrofon izni yok</string>
<string name="voice_input_error_language_not_supported">Dil desteklenmiyor</string> <string name="voice_input_error_language_not_supported">Dil desteklenmiyor</string>

View file

@ -166,6 +166,7 @@
<string name="key_volume_mute">Вимкнення звуку</string> <string name="key_volume_mute">Вимкнення звуку</string>
<string name="voice_input_listening">Диктуйте</string> <string name="voice_input_listening">Диктуйте</string>
<string name="voice_input_mic_permission_is_needed">Ви повинні надати мікрофону дозвіл на використання голосового введення.</string> <string name="voice_input_mic_permission_is_needed">Ви повинні надати мікрофону дозвіл на використання голосового введення.</string>
<string name="voice_input_error_incompatible_voice_service">Несумісний голосовий асистент</string>
<string name="voice_input_error_generic">Помилка голосового введення</string> <string name="voice_input_error_generic">Помилка голосового введення</string>
<string name="voice_input_error_no_permissions">Немає дозволу на використання мікрофона</string> <string name="voice_input_error_no_permissions">Немає дозволу на використання мікрофона</string>
<string name="voice_input_error_language_not_supported">Мова не підтримується</string> <string name="voice_input_error_language_not_supported">Мова не підтримується</string>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string translatable="false" name="dictionary_url">https://raw.githubusercontent.com/sspanak/tt9/%1$s/downloads/%2$s</string> <string name="dictionary_url" translatable="false">https://raw.githubusercontent.com/sspanak/tt9/%1$s/downloads/%2$s</string>
<string name="app_name" translatable="false">Traditional T9</string> <string name="app_name" translatable="false">Traditional T9</string>
<string name="app_name_short" translatable="false">TT9</string> <string name="app_name_short" translatable="false">TT9</string>
<string name="app_settings">TT9 Settings</string> <string name="app_settings">TT9 Settings</string>
@ -235,6 +235,7 @@
<string name="voice_input_listening">Speak</string> <string name="voice_input_listening">Speak</string>
<string name="voice_input_stopping">Turning off the microphone…</string> <string name="voice_input_stopping">Turning off the microphone…</string>
<string name="voice_input_mic_permission_is_needed">You must allow the microphone permission to use voice input.</string> <string name="voice_input_mic_permission_is_needed">You must allow the microphone permission to use voice input.</string>
<string name="voice_input_error_incompatible_voice_service">Incompatible voice assistant</string>
<string name="voice_input_error_generic">Voice input error</string> <string name="voice_input_error_generic">Voice input error</string>
<string name="voice_input_error_no_permissions">No microphone permission</string> <string name="voice_input_error_no_permissions">No microphone permission</string>
<string name="voice_input_error_language_not_supported">Language not supported</string> <string name="voice_input_error_language_not_supported">Language not supported</string>