首先介绍一下需求,做一个功能模块把手机的操作记录下来,然后进行把这些操作回放出来。当接到这样的需求时,我内心其实是拒绝的,奈何反抗无效,我也只好默默接受这个非人的需求了。但是怎么入手呢,一点思路都没有,后来去查资料,知道可以通过adb命令来执行手机的点击和滑动操作,但是怎么记录呢?
难点:
1.获取屏幕的触摸事件,本应用的activity已经不再显示。所以不能通过监听activity的触摸事件来获取屏幕坐标和事件。
2.开启服务去监听屏幕的触摸事件,但是服务中又获取不到屏幕的事件
3.使用现在主流测试框架Robotium和Uiautomator,借用Robotium Recorder和UiautomatorViewer这两个插件,但是这就需要借用pc才能 完成,不满足需求。怎么办 ???
后来想到在屏幕上放一层透明的界面,然后在监听界面上的触摸事件,但是怎么把这个界面放到手机上去呢,看了看Toast中的TN源码,找到了WindowManager这个类。来一起看看代码
private void execShellCmd(String record) {
// 申请获取root权限,这一步很重要,不然会没有作用
try {
// 左滑命令
// record = " input swipe 0 700 360 700\n" +
// "sleep 2