Чтобы обнаружить всплывающую клавиатуру EditText:
Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int proposedheight = MeasureSpec.getSize(heightMeasureSpec);
final int actualHeight = getHeight();
if (actualHeight > proposedheight){
// Keyboard is shown
} else {
// Keyboard is hidden
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
Для захвата ключевого события
final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if (event.getAction() == KeyEvent.ACTION_DOWN)
// keycode should be sent over bluetooth.
return true;
}
return false;
}
});
Чтобы ввести нажатия клавиш в вашей деятельности, просто наберите onKeyDown()
с соответствующим KeyEvent
Чтобы открыть клавиатуру
EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
и закрыть ее:
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
Если вы не заинтересованы в открытииклавиатуры на другом телефоне, просто игнорируйте этот раздел.Используйте старый добрый: setText()
Теперь, как вы формируете протокол чата, по которому Bluetooth отправляет эти ключевые события, зависит от вас. Подсказка: RemoteDroid использовал OscMessages