vysor 如何在非 root 设备上创建触摸事件?
How does vysor create touch events on a non rooted device?
这是 Koushik Dutta 的 Vysor link - https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm
它可以让您从 PC 控制您的 Android 设备。
然而,长期以来一直困扰我的一件事是它能够在 phone 上创建触摸事件,即使它没有根目录。
在对应用程序和 chrome 扩展进行了一些修改之后,我意识到他使用以下方式创建了一个单独的进程 -
sh -c "CLASSPATH=/data/app/com.koushikdutta.vysor-1/base.apk /system/bin/app_process32 /system/bin com.koushikdutta.vysor.Main"
Main
class 包含通过反射将触摸事件传递给框架的代码。
以上代码将 Main
class 作为一个单独的进程执行,其中 shell
作为用户执行该进程。
不过,据我所知,在您自己的应用程序之外创建触摸事件的唯一方法是您是 root。
有人对此有任何想法吗?
我想通了。
问题是 shell
用户也可以在整个屏幕上创建触摸事件。当您从 PC 执行 adb shell
时,通过 USB 数据线将您的 phone 连接到它,系统会自动为您分配用户 shell
.
他所做的是,然后他使用这个 shell
用户将他的 Main
class 作为一个单独的进程启动。现在,Main
class 中的 Java 代码与 shell
用户具有相同的权限(因为呃,它是 linux)。
并且,在 class 中,他使用反射将触摸事件传递给 Android 框架。然后,框架会自动将触摸事件传播到 windows.
看看我在我自己的一个应用程序中实现的这两个 classes - Main.java and EventInput.java.
但请记住,由于此 Main
class 必须 运行 在单独的进程中,因此它无法访问捆绑它的应用程序的内存。为此,我必须使用套接字机制来传输数据。甚至 aidl 也可以用于此。
这是 Koushik Dutta 的 Vysor link - https://chrome.google.com/webstore/detail/vysor-beta/gidgenkbbabolejbgbpnhbimgjbffefm
它可以让您从 PC 控制您的 Android 设备。 然而,长期以来一直困扰我的一件事是它能够在 phone 上创建触摸事件,即使它没有根目录。
在对应用程序和 chrome 扩展进行了一些修改之后,我意识到他使用以下方式创建了一个单独的进程 -
sh -c "CLASSPATH=/data/app/com.koushikdutta.vysor-1/base.apk /system/bin/app_process32 /system/bin com.koushikdutta.vysor.Main"
Main
class 包含通过反射将触摸事件传递给框架的代码。
以上代码将 Main
class 作为一个单独的进程执行,其中 shell
作为用户执行该进程。
不过,据我所知,在您自己的应用程序之外创建触摸事件的唯一方法是您是 root。
有人对此有任何想法吗?
我想通了。
问题是 shell
用户也可以在整个屏幕上创建触摸事件。当您从 PC 执行 adb shell
时,通过 USB 数据线将您的 phone 连接到它,系统会自动为您分配用户 shell
.
他所做的是,然后他使用这个 shell
用户将他的 Main
class 作为一个单独的进程启动。现在,Main
class 中的 Java 代码与 shell
用户具有相同的权限(因为呃,它是 linux)。
并且,在 class 中,他使用反射将触摸事件传递给 Android 框架。然后,框架会自动将触摸事件传播到 windows.
看看我在我自己的一个应用程序中实现的这两个 classes - Main.java and EventInput.java.
但请记住,由于此 Main
class 必须 运行 在单独的进程中,因此它无法访问捆绑它的应用程序的内存。为此,我必须使用套接字机制来传输数据。甚至 aidl 也可以用于此。