После исследования в течение 1 целого дня я пришел к следующему выводу.
Android не позволяет перехватывать ввод программной клавиатуры по умолчанию из фоновых служб. Единственный способ перехватить эти события — использовать специальные клавиатуры.
Я резюмировал это следующим образом:
В Android ведение журнала событий клавиатуры не поддерживается в фоновых службах. Некоторые из ссылок выглядят следующим образом:
Пункт 1. Разработчик Google Android
Поскольку программные методы ввода могут использовать несколько изобретательных способов ввода текста, нет гарантии, что любое нажатие клавиши на программной клавиатуре вызовет событие клавиши: это остается на усмотрение IME, и на самом деле отправка таких событий не рекомендуется. Вы никогда не должны полагаться на получение KeyEvents для любой клавиши в методе мягкого ввода. В частности, программная клавиатура по умолчанию никогда не будет отправлять какие-либо события клавиш любому приложению, предназначенному для Jelly Bean или более поздней версии, и будет отправлять события только для некоторых нажатий клавиш удаления и возврата приложениям, предназначенным для Ice Cream Sandwich или более ранней версии.
http://developer.android.com/reference/android/view/KeyEvent.html
Android Jelly Bean: от 4.1 до 4.3.1 Android IceCream Sandwich: 4.0
Нажатие клавиш на методах мягкого ввода не требуется для запуска методов в этом прослушивателе, и на самом деле это не рекомендуется. Клавиатура Android по умолчанию не будет запускать их для любой клавиши любого приложения, предназначенного для Jelly Bean или более поздней версии, и будет доставлять их только для некоторых нажатий клавиш для приложений, предназначенных для Ice Cream Sandwich или более ранней версии.
http://developer.android.com/reference/android/text/method/KeyListener.html
Пункт 2. Ключевые события переполнения стека могут обрабатываться только действиями, поскольку они являются интерфейсом для пользователя, нажимающего клавиши, и только тогда, когда они находятся на переднем плане. Даже службы, работающие в фоновом режиме, не предназначены для реагирования на действия пользователя.
Android — прослушиватель нажатия жестких клавиш в фоновом режиме
Возможно ли создать службу Android, которая прослушивает нажатия аппаратных клавиш?
Точка 3: Ромен Гай Ромен Гай (https://stackoverflow.com/users/298575/romain-guy), который работает в Google, также подтверждает это onKeyDown в сервисе? (Глобальные горячие клавиши)
Пункт 4. Другая ссылка:
Группа разработчиков Google Android: https://groups.google.com/forum/#!topic/android-developers/o--GUWmqXdI
Это можно сделать только с помощью Custom KeyBoard: нажмите клавишу кинуть другой ключ в андроид
Пожалуйста, добавьте свои комментарии, если вы думаете, что я что-то пропустил.
person
Avtar Guleria
schedule
03.12.2014