Я проверил это на API 21 и Nexus 5, и мне удалось войти в систему из службы, когда сенсорное событие было запущено системой. Однако данные в объекте MotionEvent, например, координаты, возвращают 0.0, когда ВНЕ того, что кажется пакетом моего приложения.
Два источника
интеграция ,
разрешение
Мне любопытно, почему event.getX (), event.getY () и event.getPressure () возвращают 0.0, когда не находятся в активности приложения, в котором находится сервис.
Редактировать
Это решение не запрещает другим слушателям получать событие касания, захваченное службой из-за
public boolean onTouch(View v, MotionEvent e){
Log.d(LOG_TAG, "Touch event captured");
return false;
Возвращая false, он позволяет другим слушателям получать событие.
Edit2
По-видимому, диспетчер ввода в ОС установит координаты и давление на 0, если текущая активность и слушатель не разделяют UID, здесь source