Хорошо.Я наконец понял, как делать то, что я хочу, и я не горжусь этим на Android.
Я пишу серверное / клиентское приложение, где на клиенте я должен открыть SoftKeyboard и отправить нажатые клавиши (символы и клавишу DEL) ... При каждом нажатии клавиши этот символ отправляется на сервер.Если нажата DEL, я посылаю последовательность {BS} на сервер.
Для этого мне пришлось реализовать TextWatcher и onTextChange, который хорошо работает, за исключением ситуации, когда EditText пуст и пользователь нажимает клавишу DEL.Поскольку в EditText нет изменений, нет способа обнаружить нажатие клавиши DEL.
В дополнение к TextWatcher мне пришлось реализовать onKeyListener, который я прикрепил к своему элементу управления EditText.Этот onKeyListener игнорирует все клавиши на SoftKeyboard, кроме DEL и RETURN.Не уверен почему?Может быть, ошибка?
Вот мой код:
TextView txtInput = (TextView)findViewById(R.id.txtInput);
txtInput.addTextChangedListener(inputTextWatcher);
txtInput.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d(TAG, keyCode + " character(code) to send");
return false;
}
});
и TextWatcher ....
private TextWatcher inputTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{ }
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(TAG, s.charAt(count-1) + " character to send");;
}
};