Клавиатура андроид
Здравствуйте. В данной статье я постараюсь рассказать и показать основные моменты написания собственной клавиатуры для Android’а. Статья предназначена для разработчиков, которые с этим не сталкивались, но имеют опыт знакомства с Android’ом.
Сразу оговорюсь, что мнение и код автора не являются истинной в последней инстанции, а ваши предложения и критика лишь приветствуются. И если не охота все читать, ссылка на исходники в конце статьи.
Для начала необходимо создать пустой Android проект без Activity. После этого приступим к подготовке .xml файлов, которые будут описывать Android’у нашу клавиатуру.
Базовый layout-файл, keyboard.xml
Содержит в себе View класс Android’а под названием KeyboardView и описывает внешний вид клавиатуры.
<?xml version=»1.0″ encoding=»utf-8″?> <android.inputmethodservice.KeyboardView xmlns:android=»http://schemas.android.com/apk/res/android» android:id=»@+id/keyboard» android:layout_width=»match_parent» android:layout_height=»wrap_content» android:layout_alignParentBottom=»true» android:keyPreviewHeight=»35dp» android:keyPreviewLayout=»@layout/preview» />
Атрибуты:
- android: keyPreviewHeight — задает высоту элемента подсказки, на котором отображается текущая нажатая клавиша.
- android:keyPreviewLayout — указываем layout-файл, который описывает внешний вид preview’шки.
Код preview:
<?xml version=»1.0″ encoding=»utf-8″?> <TextView xmlns:android=»http://schemas.android.com/apk/res/android» android:layout_width=»match_parent» android:layout_height=»match_parent» android:gravity=»center» android:background=»@color/key_preview_background» android:textColor=»@color/key_preview_text_color» android:textStyle=»bold» android:textSize=»25sp» />
Важный момент, атрибут background является обязательным, если его не указать, то при каждом нажатии клавиши ваша клавиатура будет падать.
Описание раскладки
Итак, мы подготовили 2 .xml файла, которые описывают внешний вид, теперь настал черед описать саму раскладку клавиатуры. Назовем этот файл keys_definition_ru.xml и находится он будет в xml ресурсах проекта. Здесь будет представлен лишь его кусок, так как файл достаточно большой.
<?xml version=»1.0″ encoding=»utf-8″?> <Keyboard xmlns:android=»http://schemas.android.com/apk/res/android» android:keyWidth=»7.5%p» android:horizontalGap=»5px» android:verticalGap=»0px» android:keyHeight=»40dp»> <Row> <Key android:codes=»-1″ android:keyIcon=»@drawable/ic_keyboard_capslock_white_24dp» android:keyWidth=»13%p» android:keyEdgeFlags=»left» /> <Key android:codes=»1103″ android:keyLabel=»я» /> <Key android:codes=»1095″ android:keyLabel=»ч» /> <Key android:codes=»1089″ android:keyLabel=»с» /> <Key android:codes=»1084″ android:keyLabel=»м» /> <Key android:codes=»1080″ android:keyLabel=»и» /> <Key android:codes=»1090″ android:keyLabel=»т» /> <Key android:codes=»1100″ android:keyLabel=»ь» /> <Key android:codes=»1073″ android:keyLabel=»б» /> <Key android:codes=»1102″ android:keyLabel=»ю» /> <Key android:codes=»-5″ android:keyIcon=»@drawable/ic_backspace_white_24dp» android:isRepeatable=»true» android:keyEdgeFlags=»right» android:keyWidth=»13%p» /> </Row> </Keyboard>
Атрибуты:
Все атрибуты описывать не будем, лишь «не очевидные».
- android:horizontalGap — горизонтальный отступ между клавишами
- android: verticalGap — вертикальный отступ
- android:codes — код нужного символа в html utf-8 (и не только utf-8, подробнее в оф. документации)
- android:keyEdgeFlags — атрибут может применять значение left или right. Эти атрибуты добавляются клавишам, которые расположены в самом левом крае или самом правом крае клавиатуры
- android:isRepeatable — повторять действие клавиши при долгом нажатии (обычно используется на пробеле или backspace)
Заключительный файл — описание локализаций (подтипов инпута):
<?xml version=»1.0″ encoding=»utf-8″?> <input-method xmlns:android=»http://schemas.android.com/apk/res/android»> <subtype android:label=»@string/subtype_en_US» android:imeSubtypeLocale=»en_US» android:imeSubtypeMode=»keyboard» /> <subtype android:label=»@string/subtype_ru_RU» android:imeSubtypeLocale=»ru_RU» android:imeSubtypeMode=»keyboard» /> </input-method>
InputMethodService — сервис клавиатуры
Теперь, после того как мы создали все необходимые xml файлы, приступаем к описанию сервиса, который будет слушать события InputMethod.
Для этого создадим сервис, наследуясь от InputMethodService и сразу реализуем интерфейс KeyboardView.OnKeyboardActionListener. В итоге у вас получиться набор методов, которые вы можете переопределить и наполнить необходимой функциональностью, которые позволяют широко кастомизировать вашу клавиатуру. Но здесь я приведу лишь примеры базовых моментов.
Методы onCreateInputView и onKey @Override public View onCreateInputView() { mKeyboardView = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard, null); mKeyboard = new Keyboard(this, R.xml.keys_definition_ru); mKeyboard.setShifted(isCapsOn); //приводим клавиатуру к верхнему регистру, если шифт нажат включен mKeyboardView.setKeyboard(mKeyboard); mKeyboardView.setOnKeyboardActionListener(this); return mKeyboardView; } @Override public void onKey(int primaryCode, int ints) { Log.d(TAG, «onKey » + primaryCode); InputConnection ic = getCurrentInputConnection(); playClick(primaryCode); switch (primaryCode) { case Keyboard.KEYCODE_DELETE: ic.deleteSurroundingText(1, 0); break; case Keyboard.KEYCODE_SHIFT: handleShift(); break; case Keyboard.KEYCODE_DONE: ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); break; case Keyboard.KEYCODE_ALT: handleSymbolsSwitch(); break; case Keyboard.KEYCODE_MODE_CHANGE: handleLanguageSwitch(); break; default: char code = (char) primaryCode; if (Character.isLetter(code) && isCapsOn) { code = Character.toUpperCase(code); } ic.commitText(String.valueOf(code), 1); break; } }
Одним из методов жизненного цикла InputMethodService является onCreateInputView внутри которого мы создаем View клавиатуры и привязываем к ней необходимые листенеры.
Событие onKey срабатывает между onPress и onRelease, на вход им подается код нажатой клавиши.
Итак, все готово… почти, осталось добавить наш сервис в манифест.
<service android:name=».SimpleIME» android:label=»@string/simple_ime» android:permission=»android.permission.BIND_INPUT_METHOD»> <meta-data android:name=»android.view.im» android:resource=»@xml/method» /> <intent-filter> <action android:name=»android.view.InputMethod» /> </intent-filter> </service>
Поздравляю, вы написали свою первую клавиатуру!
→ Исходный код клавиатуры (по умолчанию в ней включен капс)
→ Официальная документация / туториал
Большинство пользователей Android обычно довольствуются стандартным приложением для клавиатуры, предустановленным в смартфоне или планшете. Однако в Google Play Store есть немало более удачных приложений для этих целей. Эти альтернативные варианты имеют различные интересные функции, красивые темы, большой выбор настроек и расширенный функционал.
В этой статье собран список из надежных и безопасных приложений от сторонних разработчиков. Вы можете использовать их для быстрого набора текста, перевода с разных языков и других задач. Уверяем вас, они будут намного удобней, чем стандартная клавиатура.
Содержание
Gboard
Клавиатура Gboard является разработкой компании Google и она уверенно занимает первое место в данном списке. Сложно ожидать что-то еще, кроме самого лучшего, от компании, которая разрабатывает ОС Android. Одними из важнейших преимуществ Gboard является режим набора текста одной рукой, поддержка жестов и голосового ввода. Если руки заняты, сообщение можно просто продиктовать. Есть также возможность открепить клавиатуру от нижней части экрана, чтобы переместить её на любое другое место. Это значительно упрощает работу на телефонах с большим экраном.
Популярность Gboard обусловлена ещё и тем, что в неё встроен поиск в Google, позволяющий искать что-то в интернете, не выходя из приложения. Существует также поиск GIF-картинок, есть голосовой ввод и встроенный переводчик с помощью которого можно переводить сообщения с использованием сервиса Google Translate, не выходя из мессенджера. Благодаря опыту Google это приложение поддерживает больше языков, чем любая другая клавиатура. Более чем 500 языков – это результат, с которым никто не может конкурировать.
Из дополнительных возможностей можно выделить установку темного фона, добавление персонального изображения в качестве фона клавиатуры, голосовой набор текста, угадывание фраз. И это единственное приложение, которое обеспечивает блокировку оскорбительных слов при вводе текста. По умолчанию эта блокировка включена автоматически, но при желании её легко можно отключить. Приложение распространяется совершенно бесплатно. Вам не придется просматривать рекламу или покупать дополнительные функции.
SwiftKey
Приложение SwiftKey использует искусственный интеллект, благодаря которому оно фиксирует важную информацию и учитывает её, чтобы угадать следующее слово. Как только вы начнете набирать слово, оно покажется полностью. Пользователи отмечают удобство такого ввода текста и точный подбор слов. Со временем искусственный интеллект начинает работать ещё лучше благодаря обучаемости. В результате вам редко придется печатать слова полностью, т.к. это автоматически будет делать SwiftKey, что сэкономит не мало времени. Стоит отметить и политику конфиденциальности. SwiftKey не сохраняет информацию, введенную в поле пароля. Также программа на запоминает номера кредитных карт. Вы можете сохранять набранный текст в облаке и удалять его по мере необходимости.
SwiftKey также поддерживает жесты для более быстрого набора текста. Если вы предпочитаете «свайп» обычному печатанию, это приложение точно заслуживает внимания. Поддерживается 300 языков мира, более того – возможна одновременная работа сразу с 5 языками. Владельцам большого экрана смартфона или пальцев рук, для более удобной работы может быть полезна возможность менять не только расположение клавиатуры на экране, но и её размер.
TouchPal
Приложение TouchPal было разработано еще на заре существования ОС Android и оно продолжает регулярно получать обновления. TouchPal стоит отметить за удобный ввод текста, а также поддержку большого количества тем оформления. По частоте обновлений это приложение в целом соответствует Gboard. Это означает, что пользователь будет регулярно получать большое количество обновлений безопасности, функционала и новых тем.
Непрерывный ввод текста работает хорошо и в целом может быть сопоставимым с другими приложениями из этого списка. Поддерживается около 100 языков. Помимо сильной языковой поддержки в целом, исправления ошибок в словах на русском языке, есть возможность одновременной работы с несколькими языками. Но есть один недостаток – отсутствие встроенного переводчика.
TouchPal также предлагает большой выбор анимаций нажатия клавиш, дополнительных шрифтов, стикеров и эмодзи. Это отличный выбор для человека, который желает сделать клавиатуру более персонализированной.
Fleksy
Fleksy официально является самой быстрой клавиатурой в мире. Скорость ввода текста просто поразительная даже для пользователей с толстыми пальцами. По сравнению с GO Keyboard или SwiftKey, Fleksy демонстрирует действительно высокую скорость набора текста. Интуитивно понятное расположение букв упрощает введение сообщений.
Это инструмент для настоящих «текстовых маньяков». Если вы ежедневно тратите несколько часов на набор сообщений, эта программа может быть весьма полезной. Она помогает увеличить скорость набора текста благодаря удобным крупным кнопкам, запоминанию слов и фраз, а также ряду других функций. Используйте различные темы, стикеры, GIF-анимацию.
Дополнительно вы получаете более 50 различных разноцветных тем, три размера клавиатуры, более 800 GIF-анимаций и эмоджи. Также вы можете создавать быстрые клавиши, переходить в другие приложения, копировать/вставлять текст. Поддерживается около 40 языков.
Приложение имеет строгую политику конфиденциальности. Оно не собирает никаких личных данных без вашего разрешения. Программа распространяется бесплатно и без надоедливых рекламных объявлений.
Chrooma
Приложение Chrooma очень похоже на Gboard, но выгодно отличается от него большим количеством настраиваемых параметром. Здесь вы найдете массу полезных функций. Среди них: ввод жестами, изменение размеров клавиатуры, интеллектуальный ввод и автокоррекция текста. Chrooma также включает некоторые дополнительные функции: отдельная строка клавиш с цифрами, поддержка эмоджи, поиск GIF, режим ввода одной рукой. Поддерживается до 60 языков.
Самое интересное — это адаптивный цветовой режим. Клавиатура автоматически подстраивается под цветовую схему используемого приложения при вводе текста, и выглядите это так, будто она является частью запущенной программы: фон становится синим для Twitter, зеленым для Spotify, желтым для Google Keep. При ночном режиме цвета становятся более приглушенными. Если же автоматически цвет изменился неправильно, его легко подкорректировать вручную.
Вы сможете быстро удалять слова, предложения и целые фрагменты текста. Имеются элементы искусственного интеллекта, которые анализируют набираемый вами текст и учитывает его при дальнейшем использовании программы.
Ai.type
Ai.type автоматически подстраивается под особенности набора текста каждого пользователя. Благодаря этому набор текста значительно ускоряется. Программа умеет анализировать каждую букву, исправляя не всё слово целиком, а только его часть, если это необходимо. Приложение было создано еще на заре существования Android и развивалось всё это время.
Одно из главных отличий Ai.type – платная премиум-версия. Она недорогая, но при этом предоставляет пользователю большой набор тем и дополнительных функций. Имея около пятидесяти дополнительных шрифтов, более ста звуковых эффектов, около десяти всплывающих анимаций и огромное количество тем, Ai.type превосходит многие другие клавиатуры в плане оформления. Здесь можно настроить вид клавиатуры именно так, как вы этого хотите. Но стоить отметить, что в пробной версии все функции доступны только в течение 14 дней.
Кроме большого количества тем оформления есть и непрерывный ввод текста, который работает не хуже, чем в других приложениях из этого списка. Единственным недостатком можно назвать отсутствие функции удаления в режиме непрерывного ввода. Придется оторвать палец от экрана, чтобы удалить текст. Но значительных неудобств это не создает, и большинство пользователей просто не заметят такой особенности. К сожалению, в приложении нет никаких функций перевода текста. Если нужно будет перевести текст, то придется использовать старый добрый метод «копировать/вставить».
Multiling O
Multiling O — это универсальный вариант, если вам требуется несколько языков. В действительности это приложение поддерживает более 200 языков на момент написания этой статьи, что гораздо больше, чем у почти любой другой клавиатуры.
Помимо превосходной языковой поддержки, вы получите набор жестов, возможность настройки раскладки в стиле ПК и изменение её размера, темы, эмодзи, различные раскладки и числовую строку. Это отличный вариант для полиглотов.
Smart Keyboard Pro
Smart Keyboard Pro существует очень давно, является одной из самых старых и простых клавиатур для Android. К счастью, она по-прежнему получает регулярные обновления.
Кроме базового функционала, вы получите эмодзи, автоматическое исправление, прогноз следующего слова и многое другое. Есть возможность установить свои скины, режим T9, компактный режим, поддержку аппаратных клавиатур. Приложение не так интересно, как многие другие, но если вам требуется что-то простое, то оно вам подойдет.
Еще в мае 2016 года корпорация Google выпустила удивительное новое приложение под названием Gboard, которое предоставляло пользователям возможность осуществлять поиск Google прямо внутри работающего приложения. К сожалению, на тот момент программа была предназначена лишь для устройств, работающих под управлением iOS. Но в Google пообещали когда-нибудь сделать вариант и для платформы Android. Рады вам сообщить, что этот день настал. Gboard фактически занимает место Google Keyboard в очередном обновлении Android 6.0 Marshmallow.
Итак, что же нам приносит обновление Gboard? Самое большое и ценное дополнение к функционалу — так называемая «кнопка G», которая может быть включена в меню настроек приложения. Когда вы находитесь в процессе набора текста, просто нажмите кнопку, чтобы открыть страницу поиска. После этого вы можете воспользоваться поиском Google для всего, что вам только понадобилось — найти объект или информацию и даже поделиться своими результатами. Эта возможность, безусловно, станет очень полезной для многих людей, так как она по сути избавляет пользователя от необходимости закрывать текущее приложение для поиска информации.
В обновленном Gboard имеется неплохой набор смайлов, реализован быстрый поиск gif-ок, есть возможность голосового ввода, незаменимого при работе с большими объемами информации. А для людей, которые говорят на нескольких языках, Gboard приносит многоязычную поддержку. Речь не о том, что теперь приложение поддерживает 120 языков (36 из них новых). Оно позволяет общаться одновременно на трех предварительно выбранных языках, не залезая всякий раз в настройки, когда появляется необходимость перехода, к примеру, с русского на английский.
Теперь, когда вы нажмете на кнопку G, то видите небольшое всплывающее меню с быстрым доступом к темам и меню настроек. Раньше вы должны были бы долго удерживать запятую, чтобы попасть в меню настроек. Теперь есть намного более быстрый способ изменить настройки клавиатуры. Предлагается и такой удобный режим, как Glide-печать, то есть, набор текста без отрыва пальца от клавиатуры. Небольшое изменение, но все же стоит отметить.
Помимо этих ключевых отличий, клавиатура функционирует точно так же, как и всегда — она сохранила все возможности Google Keyboard, только стала намного умнее. Корпорация Google до сих пор еще не представила официально список изменений этого обновления. Поэтому, возможно, приложение скрывает в себе еще немало приятных инноваций, о которых мы узнаем позже и с удовольствием расскажем на страницах нашего сайта. Gboard уже можно скачать в Google Play. Источник: https://fan-android.com/
Текстовый редактор «Google Документы»
- Платформы: веб.
Многие пользователи «Google Документов» даже не подозревают, что этот сервис поддерживает диктовку. Правда, функция работает только в настольном браузере Google Chrome. Чтобы включить её, нажмите «Инструменты» и выберите «Голосовой ввод». На экране появится иконка микрофона. Кликните по ней, когда будете готовы диктовать.
«Google Документы» распознают знаки препинания. Так что если вы произнесёте «точка», «запятая», «восклицательный знак» или «вопросительный знак», сервис добавит соответствующий символ.
Кроме того, «Google Документы» поддерживают голосовые команды для форматирования, выделения и навигации по тексту. Но пока на русском языке можно использовать лишь две: «новая строка» и «новый абзац». Остальные команды доступны только на английском. Их полный список можно посмотреть в справке «Google Документов».
Точность распознавания у сервиса неплохая, чего нельзя сказать про скорость: иногда текст выводится с задержкой. Кроме того, после точек алгоритм часто вставляет строчные буквы вместо прописных или не к месту добавляет букву «к».
«Google Документы» →
Функция «Диктовка» на устройствах Apple
- Платформы: macOS, iOS.
Apple встроила функцию голосового ввода в свои операционные системы. Поэтому владельцы iPhone, Mac и iPad могут использовать диктовку без дополнительных программ. Что особенно приятно, технология хорошо справляется с русским языком. О знаках препинания разработчики тоже позаботились. На iPhone 6S и более новых устройствах голосовой ввод работает без интернета.
Чтобы воспользоваться диктовкой в iOS, просто нажмите на значок микрофона на стандартной клавиатуре.
В macOS голосовой ввод сначала нужно активировать. Для этого откройте меню Apple (иконка яблока) и выберите «Системные настройки» → «Клавиатура» → «Диктовка». Поставьте флажок «Включена» и выберите клавишу для перехода в режим голосового ввода. С её помощью вы сможете включать диктовку в любой программе, которая поддерживает текстовый ввод.
Клавиатура GBoard
- Платформы: Android, iOS.
Приложение GBoard — ещё один продукт Google, использующий технологию голосового ввода. С помощью этой клавиатуры вы можете диктовать текст в большинстве мобильных программ. Чтобы переключиться на голосовой набор, достаточно нажать на ней кнопку микрофона.
GBoard хорошо работает на Android, причём даже без подключения к Сети. Быстро и довольно точно распознаёт слова и расставляет знаки препинания. Но на iOS голосовой ввод доступен только онлайн и часто отказывается воспринимать русскую речь. Хочется верить, что проблема временная и разработчики исправят её в будущих обновлениях.
Загрузить QR-Code Разработчик: Google LLC Цена: Бесплатно Загрузить QR-Code Разработчик: Google LLC Цена: Бесплатно
Яндекс.Клавиатура
- Платформы: Android, iOS.
Специалисты «Яндекс» давно работают над распознаванием русской речи и неплохо преуспели в этой сфере. Неудивительно, что их клавиатура отлично справляется с голосовым вводом. Приложение относительно точно и быстро распознаёт текст, хотя и требует для этого подключение к интернету.
«Яндекс.Клавиатура» работает в большинстве приложений на Android и iOS. Но поведение программы на этих платформах немного отличается. Так, Android‑версия не распознаёт знаки препинания на слух, как это происходит в iOS, а расставляет их самостоятельно. Задумка хорошая, но на деле алгоритм часто пропускает запятые и вопросительные знаки.
Чтобы включить режим диктовки в Android, разверните клавиатуру и задержите касание на иконке с микрофоном. В iOS для этого нужно зажать пробел.
Загрузить QR-Code Разработчик: Yandex Apps Цена: Бесплатно Загрузить QR-Code Разработчик: Yandex LLC Цена: Бесплатно
Голосовой блокнот SpeechPad
- Платформы: веб, Android, iOS.
SpeechPad использует технологии распознавания речи Google. Работает быстро, понимает знаки препинания. Точность преобразования не хуже, чем у «Google Документов». Мобильные версии тоже поддерживают офлайн‑диктовку. Преобразованный в SpeechPad текст можно легко скопировать и вставить на любом сайте или в любой программе.
SpeechPad доступен бесплатно на всех перечисленных платформах. Но приложение для iOS показывает рекламу, которую можно отключить за 299 рублей. Для Android также доступна премиум‑версия с дополнительными функциями вроде поддержки Bluetooth‑микрофона и тёмного режима. Её стоимость — 149 рублей.
Веб‑версия SpeechPad работает только в браузере Chrome. На сайте проекта также есть инструкция по интеграции сервиса с Windows, macOS и Linux для распознавания речи в компьютерных программах. Но у нас SpeechPad не заработал вне Chrome.
Загрузить QR-Code Разработчик: Simple Seo Solutions Цена: Бесплатно Загрузить QR-Code Разработчик: Alexei Shechkov Цена: Бесплатно
Веб‑версия SpeechPad →
VOCO
- Платформы: Windows.
Программа, разработанная российской компанией «ЦРТ». VOCO работает без интернета и хорошо распознаёт речь. С её помощью можно диктовать текст в любых установленных приложениях, включая Word и браузеры. Чтобы включить голосовой ввод, достаточно дважды нажать Ctrl.
VOCO распознаёт знаки препинания, умеет расставлять их автоматически и делать абзацы. При необходимости вы можете в любой момент просмотреть список поддерживаемых голосовых команд.
Для нормального функционирования программы разработчик рекомендует 4 ГБ оперативной памяти. VOCO ощутимо грузит систему, поэтому для слабых компьютеров может не подойти.
Программа платная. Базовая версия стоит 1 867 рублей и включает все обновления, который выйдут в течение года. Если желаете, чтобы она обновлялась и дальше, нужно оформить подписку стоимостью 559 рублей в год.
Кроме того, доступны более дорогие версии VOCO: Professional и Enterprise. Первая распознаёт больше слов из профессиональной лексики и продаётся за 15 500 рублей в комплекте с гарнитурой Jabra UC Voice 550 Duo. Enterprise также содержит профессиональные словари, но вместо гарнитуры покупатель получает многопользовательскую лицензию для своей компании.
Вы можете бесплатно скачать VOCO с официального сайта и протестировать все её возможности перед покупкой.
Попробовать VOCO →