Я разработал приложения для зеркального отображения экрана, одно из которых предназначено для сервера, а другое получает экраны сервера.
Сейчас я работаю над добавлением событий касания в приложение получателя и отправкой события касания в приложение сервера.Поскольку оба приложения находятся на разных устройствах, я устанавливаю соединение, используя для связи протокол 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
из ОС.Но я не хочу рутировать устройство.
Любая помощь будет принята с благодарностью.