我开发了用于屏幕镜像的应用程序,一个用于服务器,另一个用于接收服务器的屏幕。
现在,我正在努力在接收器应用中添加Touch事件并将触摸事件发送到服务器应用。由于这两个应用程序都在不同的设备上,因此我使用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));
}
});
以上代码给出的错误是Request Permission to inject event
由于inject_event权限是系统权限,因此我必须将应用程序作为系统应用程序。为了制作系统应用,我必须使用系统证书签署应用程序。所以我按照链接How to compile Android Application with system permissions如果我能够将应用程序生成为系统应用程序,那么我必须将其安装为/system/app
但是当我在搜索将应用程序添加为系统应用程序时,则要求root设备从操作系统获取read/write
访问权限。但是我不想让设备生根。
任何帮助都会深深感激。