利用Monkey事件注入原理实现Android远程事件模拟
Monkey 的事件注入原理,其实用起来挺香的。你只要搞懂 Android 的事件系统,再借点反射和蓝牙的力,就能把一个“远程鼠标”搬到手机上。嗯,说白了,就是通过反射把一些系统级 API 拉出来用,再加个 BLE 蓝牙通信,两个设备一来一回地传事件,就能在另一个手机上模拟触摸、按键啥的。
Monkey 的事件机制,说复杂也不复杂。它会往系统事件队列里丢MotionEvent
和KeyEvent
,系统完你就能看到效果了。你可以通过monkey
命令来手动丢事件,也能用脚本自动跑。
要搞远程注入,第一步要有个“鼠标端”,监听点击或按键动作,把这些转成 Android 能认的事件。反射用来绕过系统的限制,比如调用InputManager.injectInputEvent
。但记得要加权限,不然容易被系统干掉。
第二步是传输。用蓝牙 BLE比较合适,Android 系统原生支持,带宽不大但传事件数据足够了。你可以用 JSON 打包事件对象,结构清楚还好调试。
“显示器端”收到事件后,同样是反射注入到系统队列里,就像本地用户操作一样。效果是还挺顺滑的,响应也快。不过记得控制频率,事件太密系统会卡或者直接丢事件。
要注意的是,这套东西对系统权限要求比较高,而且有一定的安全风险。别想着拿它做啥越界的事,主要还是用来测试或者特殊场景的远程控制比较靠谱。
如果你在做远程测试工具或者交互设备,可以试着用这个思路搭一套系统。配合monkey
命令和蓝牙协议,灵活性还蛮高的。
20.2MB
文件大小:
评论区