Подтвердить что ты не робот

Создание пользовательской клавиатуры в Android

Я бы хотел написать пользовательскую клавиатуру, которая должна работать на всех устройствах под управлением Android 4.0 и выше. Поэтому сначала я обыскал сеть, но ничего не нашел об этом. Итак, как я могу создать приложение, которое заменяет клавиатуру на складе Android?

Что я хотел бы знать:

  • Есть ли хороший учебник? У вас есть образец кода?
  • Нужен ли мне root для этого?
  • Какова структура за этим? (Это просто обычная деятельность с сервисом?)
  • Можно ли считывать входной блок в клавиатуре?
4b9b3361

Ответ 1

Итак, я сделал это примерно 2 года, когда работал над Swype. Вам не нужен root, вам просто нужно реализовать InputMethodService. Вы можете получить текст из большинства текстовых полей, но не все (не все поля редактирования корректно реализуют половину API-интерфейсов. В частности, ничего с типом ввода INPUT_TYPE_NULL не будет работать). Чтобы получить текст, вы должны вызвать inputConnection.getExtractedText

Будьте осторожны - API плохой, и приложения поражены и не работают при работе с ним. Базовая клавиатура проста, но старайтесь и делайте что-нибудь сложное, и вы потратите много времени. Многие человеко-часы вошли в большие клавиатуры

Ответ 2

Итак, сначала я искал сеть, но ничего не нашел об этом

Создание метода ввода описано в документации разработчика Android, которая находится в Интернете.

У вас, ребята, есть примерный код?

В каталоге samples/ вашей установки SDK есть образец, если вы загрузили образец кода из диспетчера SDK. Найдите SoftKeyboard.

Нужен ли мне root для этого?

Нет.

Какова структура за этим? (Это просто обычная деятельность с сервисом?)

Это a InputMethodService.

Ответ 3

  • Есть ли хороший учебник? У вас есть образец кода?

Хороший учебник:
http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-android--cms-22615

  1. Нужен ли мне root для этого?

Нет, root не требуется для этого.

  1. Какова структура за этим? (Это просто обычная деятельность с сервисом?)

Вам нужно использовать inputMethodService, см. документацию .

  1. Можно ли считывать входной блок в клавиатуре?

root: no

Можно ли считывать входной блок внутри клавиатуры?

да, возможно.

InputConnection ic = getCurrentInputConnection();
String currentText = ic.getExtractedText(new ExtractedTextRequest(), 0).text;