Как записывать все сенсорные и акселерометры на устройстве Android во ВСЕХ приложениях

В настоящее время я работаю над исследовательским проектом, в котором участвуют люди, играющие в игры на устройстве Android. Я надеюсь, что смогу написать приложение для Android, которое записывает акселерометр и события касания. Я хотел бы, чтобы мои пользователи могли играть в игры, такие как сердитые птицы, а я записываю их трогательные данные.

Я понимаю, что такой тип сбора данных возможен изнутри приложения, но возможно ли это из-за пределов приложения? (Возможно, через приложение, работающее в фоновом режиме?)

Если это невозможно, есть ли альтернативы? (Я полагаю, что теоретически могу пойти в исходный код ОС Android и сделать это?)

Я понимаю, что такой тип сбора данных возможен изнутри приложения, но возможно ли это из-за пределов приложения? (Возможно, через приложение, работающее в фоновом режиме?)

Для сенсорных событий нет, для очевидной конфиденциальности и соображений безопасности. Раньше это было возможно (исследование термина «tapjacking»), но текущие версии Android, наконец, заблокировали это поведение.

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

Я считаю, что теоретически могу пойти в исходный код ОС Android и сделать это возможным?

Да, хотя вам нужно было бы превратить этот модифицированный Android в ROM-мод и установить его на устройства.

Приложениям не разрешается делать это на защищенном устройстве (т. Е. Потребительский телефон / планшет, который не был «укоренен»).

Однако, в зависимости от ваших потребностей, это возможно с помощью средств разработки, подключенных к компьютеру. Если вы можете сделать некоторую умеренно раздражающую настройку перед каждым испытанием с контролируемыми обстоятельствами, я считаю, что вы можете сделать это на некоторых накопительных устройствах, используя USB-кабель для переключения ADB в режим Wi-Fi, а затем отслеживая входные события через сеанс беспроводной ADB. Видеть

http://source.android.com/tech/input/getevent.html

Этот документ, по-видимому, подразумевает, что требуется «su» (что странно, так как официальное «su» не может использоваться пользователями без полномочий root), однако оно работает без использования многих накопительных устройств.

Вероятно, вы также захотите запустить logcat, чтобы выяснить, какое приложение находится на переднем плане.