如何获取用户输入法语言

时间:2015-10-30 17:08:44

标签: android

我正在编写一个使用编辑文本的应用程序。我想知道在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

请有人帮助我知道在活动创建时获取用户输入法。 感谢。

1 个答案:

答案 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"