diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/voice/SpeechRecognizerSupportModern.java b/app/src/main/java/io/github/sspanak/tt9/ime/voice/SpeechRecognizerSupportModern.java index 9c409b6e..6e5a9355 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/voice/SpeechRecognizerSupportModern.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/voice/SpeechRecognizerSupportModern.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.concurrent.Executors; import io.github.sspanak.tt9.languages.Language; -import io.github.sspanak.tt9.util.sys.DeviceInfo; + @RequiresApi(api = Build.VERSION_CODES.TIRAMISU) class SpeechRecognizerSupportModern extends SpeechRecognizerSupportLegacy implements RecognitionSupportCallback { @@ -45,7 +45,6 @@ class SpeechRecognizerSupportModern extends SpeechRecognizerSupportLegacy implem void checkOfflineSupport(@NonNull Runnable onSupportChecked) { if ( locale == null - || !DeviceInfo.AT_LEAST_ANDROID_13 || !isOnDeviceRecognitionAvailable || missingOfflineLanguages.contains(locale) || availableOfflineLanguages.contains(locale) 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 51fda586..ad124206 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 @@ -10,7 +10,6 @@ import android.speech.SpeechRecognizer; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import java.lang.reflect.Constructor; import java.util.ArrayList; import io.github.sspanak.tt9.R; @@ -39,7 +38,7 @@ public class VoiceInputOps { ConsumerCompat onError ) { listener = new VoiceListener(ims, onStart, this::onStop, this::onError); - recognizerSupport = lazyLoadSupportClass(ims); + recognizerSupport = DeviceInfo.AT_LEAST_ANDROID_13 ? new SpeechRecognizerSupportModern(ims) : new SpeechRecognizerSupportLegacy(ims); onStopListening = onStop != null ? onStop : result -> {}; onListeningError = onError != null ? onError : error -> {}; @@ -48,30 +47,6 @@ public class VoiceInputOps { } - /** - * Android normally loads all classes even if they are not used on specific version. This here - * prevents the following error on older devices like Sonim XP3800: - * java.lang.NoClassDefFoundError: Failed resolution of: Landroid/speech/RecognitionSupportCallback; - * Caused by: java.lang.ClassNotFoundException: Didn't find class "android.speech.RecognitionSupportCallback" - * - */ - private SpeechRecognizerSupportLegacy lazyLoadSupportClass(Context context) { - if (DeviceInfo.AT_LEAST_ANDROID_13) { - try { - Package voicePackage = SpeechRecognizerSupportLegacy.class.getPackage(); - String className = voicePackage != null ? voicePackage.getName() + ".SpeechRecognizerSupportModern" : ""; - Class clazz = Class.forName(className); - Constructor ctor = clazz.getDeclaredConstructor(Context.class); - return (SpeechRecognizerSupportLegacy) ctor.newInstance(context); - } catch (Exception e) { - return new SpeechRecognizerSupportLegacy(context); - } - } - - return new SpeechRecognizerSupportLegacy(context); - } - - static String getLocale(@NonNull Language lang) { return lang.getLocale().toString().replace("_", "-"); }