Как получить доступ к клавиатуре через Bluetooth в Android? - PullRequest
0 голосов
/ 29 ноября 2011

Я хочу получить доступ к клавиатуре через Bluetooth.

Например: Два устройства соединяются друг с другом через Bluetooth, если я открываю клавиатуру на первом устройстве и хочу получить доступ к этой клавиатуре на другом устройстве в любом текстовом редакторе.

Так как я могу получить доступ к этой клавиатуре в другом устройстве через Bluetooth в Android?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2011

Если вы хотите, чтобы кто-то на телефоне A нажал клавишу, и ключ должен быть введен в текущее выделенное поле на телефоне B, то это то, что вам нужно:

Приложение для обоих телефоновв «Режиме отправки» и один в «Режиме приема»).

Вам необходимо зафиксировать нажатие клавиши, закодированное в ответе @Reno.Затем вам нужно использовать транспортный механизм (в данном случае Bluetooth), чтобы перенести его на другое устройство.Вы должны быть в состоянии найти более чем достаточно учебных пособий по передаче строк через Bluetooth.

Вам необходимо приложение на телефоне B, чтобы получить строку / символ и затем вывести его в текущее выбранное поле.Это означает нахождение сфокусированного поля (опять же, ответы там на SO) и затем запись в это поле (которое, вероятно, будет setText("A");).

0 голосов
/ 29 ноября 2011

Чтобы обнаружить всплывающую клавиатуру 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

...