Ответ 1
После исследования в течение одного целого дня я пришел к заключению ниже.
Android не позволяет перехватывать по умолчанию программные клавиатурные входы из фоновых служб. Единственным способом перехвата этих событий являются пользовательские клавиатуры.
Я подвел итог следующим образом:
В Android Key logging для событий клавиатуры не поддерживается в фоновых службах. Некоторые из ссылок следующие:
Пункт 1: Разработчик Google Android
Как мягкие методы ввода могут использовать множественные и изобретательные способы ввода текста, нет никакой гарантии, что любое нажатие клавиши на мягкой клавиатуре вызовет ключевое событие: это остается на усмотрение IME, и на самом деле отправка таких событий не рекомендуется. Вы никогда не должны полагаться на получение KeyEvents для любой клавиши по методу мягкого ввода. В частности, клавиатура программного обеспечения по умолчанию никогда не отправит какое-либо ключевое событие в какое-либо приложение, нацеленное на Jelly Bean или новее, и будет отправлять события только для некоторых нажатий клавиш удаления и возврата для приложений, нацеленных на Ice Cream Sandwich или ранее.
http://developer.android.com/reference/android/view/KeyEvent.html
Android Желе 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: Переполнение стека KeyEvents могут обрабатываться только действиями, поскольку они являются интерфейсом для пользователя, нажимающего клавиши, и только когда они находятся на переднем плане. Даже службы, работающие в фоновом режиме, не предназначены для реагирования на ввод пользователя.
Android - прослушиватель жестких клавиш нажимает на фон
Возможно ли создать службу Android, которая прослушивает аппаратные нажатия клавиш?
Пункт 3: Ромен Гай Ромен Гай (https://stackoverflow.com/users/298575/romain-guy), который работает в Google, также подтверждает это onKeyDown в сервисе? (Глобальные горячие клавиши)
Точка 4: некоторые другие ссылки:
Google android-developers Группа: https://groups.google.com/forum/#!topic/android-developers/o--GUWmqXdI
Это можно сделать только с помощью Custom KeyBoard: получить нажатую клавишу и выбросить еще один ключ в android
Пожалуйста, добавьте свои комментарии, если вы думаете, что я что-то пропустил.