2012-02-25 4 views
3

Я хотел бы сделать несколько простых, но, поскольку это наступает трудная задача. У меня есть элемент управления EditText. Я хочу сделать это, когда я перестаю печатать на нем (onFocusChanged, focus = false). Я хочу записать состояние клавиатуры - какой язык был использован, и в следующий раз, если я увижу, что клавиатура была «запомнилась», я хочу установите его так, как было раньше.Android: Как определить, какая клавиатура используется

Я попытался заглянуть в МВФ и IME, но это только дает мне некоторую информацию, но без опции «установить», так что это не то, что мне нужно. С другой стороны, есть KeyboardView - есть некоторые функции, которые могут помочь (getKeyboard, setKeyboard), но я не знаю, как получить KeyboardView!

Зачем мне это нужно? У меня есть 2 EditText, язык в каждом из них будет другим, поэтому пользователь должен сам изменить язык, что очень раздражает, так как число входных итераций велико. Если бы я мог вспомнить используемую клавиатуру ... :)

Цените свою помощь!

ответ

2
public InputMethodInfo getCurrentImeInfo(){ 
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    List<InputMethodInfo> mInputMethodProperties = imm.getEnabledInputMethodList(); 

    final int n = mInputMethodProperties.size(); 
    for (int i = 0; i < n; i++) { 

     InputMethodInfo imeInfo = mInputMethodProperties.get(i); 

     if (imeInfo.getId().equals(Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD))) { 

      return imeInfo; 
     } 
    } 
    return null; 
} 
+0

Это не поможет мне с установкой правой клавиатуры на следующий раз .. И я не очень понимаю, что это нужно делать с DEFAULT_INPUT_METHOD .. –

+0

'InputMethodInfo' имеет идентификатор, который может быть использован в 'InputMethodManager.setInputMethod' –

+0

Этот идентификатор дает мне имя используемой клавиатуры, но не язык, который я выбрал на этой клавиатуре :) –

Смежные вопросы