Я пытался перехватить motionEvents и keyEvents, которые генерируются в результате взаимодействия пользователя с пользовательским интерфейсом. До сих пор я исследовал эти варианты:
- Декс инъекция (слишком сложная)
- расширил мой класс активности, перехватывая motionEvents, используя dispatchTouchEvent, регистрируя событие и передавая его в super. dispatchTouchEvent (это потребует расширения всех классов активности до моего измененного класса и, возможно, ограничит мое приложение, которое уже использует dispatchTouchEvent)
- Использование инструментов для добавления прослушивателей в приложение (неудачная попытка, не знаю, возможно ли это)
По сути, я пытаюсь реализовать регистратор событий, чтобы, захватив движение и ключевые события, я мог создать воспроизведение записи. Одно из ограничений, которое у меня есть, - это возможность прикреплять эту запись к любому приложению для Android, поэтому мне нужно минимизировать кодирование регистраторов в самом приложении, например, я хотел бы добавить несколько jar-файлов, а затем инициализировать их в приложении следующим образом:
public class Calculator extends Activity {
public void onCreate(Bundle savedInstanceState) {
initialize recorder here
//application code
}
//calculator application code here
}
Примечание. Расширение класса действия до специального класса, в котором есть код, который захватывает события с использованием dispatchTouchEvent, а затем расширение всех остальных классов действий из этого специального класса - не очень хорошая идея, поскольку, если исходное действие имеет некоторый код для dispatchTouchEvent, тогда эта функция не будет работать в расширенном специальном классе.
Также приветствуются решения с точки зрения ОС без изменения кода ОС (включая c, c ++)