Inject Touch событие в приложении для Android - PullRequest
0 голосов
/ 30 мая 2018

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

Сейчас я работаю над добавлением событий касания в приложение получателя и отправкой события касания в приложение сервера.Поскольку оба приложения находятся на разных устройствах, я устанавливаю соединение, используя для связи протокол DLNA.

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

Ниже приведен код, который я использую:

       m_Instrumentation = new Instrumentation();

       AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            //TODO your background code

            m_Instrumentation.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),
                    SystemClock.uptimeMillis(),MotionEvent.ACTION_DOWN,x, y,0));
            m_Instrumentation.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),
                    SystemClock.uptimeMillis(),MotionEvent.ACTION_UP,x, y,0));
        }
    });

Приведенный выше код дает ошибку, Запрос на разрешение на ввод события

Поскольку разрешение inject_event является разрешением системы, поэтому я должен сделать приложение системным приложением.Для создания системного приложения я должен подписать приложение системными сертификатами.Поэтому я перешел по ссылке Как скомпилировать Android-приложение с системными разрешениями И если я могу сгенерировать приложение как системное приложение, я должен установить его как /system/app

, но когда япри поиске добавления приложения в качестве системного приложения запрашивает корневое устройство для получения доступа read/write из ОС.Но я не хочу рутировать устройство.

Любая помощь будет принята с благодарностью.

...