diff --git a/android/src/main/java/bz/rxla/flutter/speechrecognition/SpeechRecognitionPlugin.java b/android/src/main/java/bz/rxla/flutter/speechrecognition/SpeechRecognitionPlugin.java index 6d9a675..bf79b18 100644 --- a/android/src/main/java/bz/rxla/flutter/speechrecognition/SpeechRecognitionPlugin.java +++ b/android/src/main/java/bz/rxla/flutter/speechrecognition/SpeechRecognitionPlugin.java @@ -58,13 +58,18 @@ public void onMethodCall(MethodCall call, Result result) { case "speech.activate": // FIXME => Dummy activation verification : we assume that speech recognition permission // is declared in the manifest and accepted during installation ( AndroidSDK 21- ) - Locale locale = activity.getResources().getConfiguration().locale; + Locale locale; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + locale = activity.getResources().getConfiguration().getLocales().get(0); + } else { + locale = activity.getResources().getConfiguration().locale; + } Log.d(LOG_TAG, "Current Locale : " + locale.toString()); speechChannel.invokeMethod("speech.onCurrentLocale", locale.toString()); result.success(true); break; case "speech.listen": - recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, getLocale(call.arguments.toString())); + recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, getAndroidLocaleCode(call.arguments.toString())); speech.startListening(recognizerIntent); result.success(true); break; @@ -87,9 +92,8 @@ public void onMethodCall(MethodCall call, Result result) { } } - private Locale getLocale(String code) { - String[] localeParts = code.split("_"); - return new Locale(localeParts[0], localeParts[1]); + private String getAndroidLocaleCode(String code) { + return code.replace("_", "-"); } @Override