我正在编写一个使用编辑文本的应用程序。我想知道在oncreate方法或键盘输入类型更改时用户输入的语言是什么。有没有办法设置一个监听器来获得这种改变?我找到的所有答案都是关于语言环境而不是输入语言。我不想处理语言环境,语言环境在应用程序中没有效果,输入语言也没有。我用这个代码。 private void printInputLanguages(){
List<InputMethodInfo> ims = imm.getEnabledInputMethodList();
for (InputMethodInfo method : ims) {
List<InputMethodSubtype> submethods = imm
.getEnabledInputMethodSubtypeList(method, true);
for (InputMethodSubtype submethod : submethods) {
if (submethod.getMode().equals("keyboard")) {
String currentLocale =
submethod.getLocale();
tv.setText(currentLocale);
Log.i("sara", "Available input method locale: "
+ currentLocale);
}
}
}
这个代码,但没有一个没有帮助。
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String localeString = ims.getLocale();
Locale locale = new Locale(localeString);
String currentLanguage = locale.getDisplayLanguage();
我使用了这个链接,但我又无法解决我的问题
Get keyboard language or detect user input language in Android
请有人帮助我知道在活动创建时获取用户输入法。 感谢。
答案 0 :(得分:0)
请检查一下:我认为您需要的只是内部,请注意它的完整工作代码。
Android: Detect softkeyboard RTL Vs LTR (language direction)
这里有一个检测软键盘当前语言的简短代码(在屏幕键盘上 - 输入法语言):localeDisplayName
是键盘的语言......
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype inputMethodSubtype = inputMethodManager.getCurrentInputMethodSubtype();
Locale mLocale = new Locale(inputMethodSubtype.getLocale());
String localeDisplayName = mLocale.getDisplayName(); //e.g. "English"