Android通过adb命令实现模拟滑动
来源:互联网 发布:unix高级编程环境 编辑:程序博客网 时间:2024/05/22 11:41
背景:
本文通过代码实现listview滑动功能,主要适于用自己开发的自动化测试
预备知识:
adb shell sendevent /dev/input/event0 3 0 110 //x坐标
adb shell sendevent /dev/input/event0 3 1 70 //y坐标
adb shell sendevent /dev/input/event0 1 330 1 //按下状态,准确的说是有压力值
adb shell sendevent /dev/input/event0 0 0 0 //必要的一行数据
adb shell sendevent /dev/input/event0 1 330 0 //抬起状态,无压力值
adb shell sendevent /dev/input/event0 0 0 0 //必要的一行,相当于终止一段完整数据的标致
模拟滑动轨迹
如下例是画出一条开始于(100,200),止于(108,200)的水平直线
adb shell sendevent /dev/input/event0 3 0 100 //start from point (100,200)
adb shell sendevent /dev/input/event0 3 1 200
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 3 0 101 //step to point (101,200)
adb shell sendevent /dev/input/event0 0 0 0
…………………… //must list each step, here just skip
adb shell sendevent /dev/input/event0 3 0 108 //end point(108,200)
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0
核心代码:
/** * @author chenzheng * @since 2014-11-11 * @Description: 模拟滑动 * @throws * @param x1 * @param y1 * @param x2 * @param y2 * void */private static void dragView(int x1, int y1,int x2, int y2){Log.e(tag, "drag " + x1 + "," + y1 + " to " + x2 + "," + y2);List<String> pointList = new ArrayList<String>();for(int j=y1-1; j>y2; j=j-50){pointList.add("adb shell sendevent /dev/input/event0 3 1 " + j);pointList.add("adb shell sendevent /dev/input/event0 0 0 0");}String[] cmds1 = {"adb shell sendevent /dev/input/event0 3 0 " + x1,"adb shell sendevent /dev/input/event0 3 1 " + y1,"adb shell sendevent /dev/input/event0 1 330 1","adb shell sendevent /dev/input/event0 0 0 0"};String[] cmds2 = {"adb shell sendevent /dev/input/event0 3 1 " + y2,"adb shell sendevent /dev/input/event0 0 0 0","adb shell sendevent /dev/input/event0 1 330 0","adb shell sendevent /dev/input/event0 0 0 0"};try {Process sh = Runtime.getRuntime().exec("su");OutputStream os = sh.getOutputStream();for (int i = 0; i < cmds1.length; i++) {os.write((cmds1[i] + "\n").getBytes());os.flush();}for (int i = 0; i < pointList.size(); i++) {os.write((pointList.get(i) + "\n").getBytes());os.flush();}for (int i = 0; i < cmds2.length; i++) {os.write((cmds2[i] + "\n").getBytes());os.flush();}os.write("exit\n".getBytes());os.flush();sh.waitFor();os.close();sh = null;} catch (Exception e) {e.printStackTrace();}}
- Android通过adb命令实现模拟滑动
- Android 通过ADB模拟按键、点击、滑动等事件
- Android adb input命令模拟滑动 按键 点击事件
- Android adb 模拟滑动 按键 点击事件
- Android-----adb 模拟滑动 按键 点击事件
- Android adb 模拟滑动 按键 点击事件
- Android adb 模拟滑动 按键 点击事件
- Android adb 模拟滑动 按键 点击事件
- Android adb 模拟滑动 按键 点击事件
- Android adb 模拟滑动 按键 点击事件
- Android通过adb命令记录
- 我的Android进阶之旅------>Android中通过adb shell input来模拟滑动、按键、点击事件
- PC通过ADB控制Android手机模拟点击,滑动,输入等事件(包括控制多台Android手机)
- 我的Android进阶之旅------>Android中通过adb shell input来模拟滑动、按键、点击事件
- [Android]通过adb shell input上报命令模拟屏幕点击事件
- Android通过指令模拟touch滑动解锁
- Android机顶盒 adb命令模拟遥控器操作
- [Android][adb]input笔记--模拟-按键-点击-滑动事件
- C#学习笔记---进程与线程的一个简单解释
- 关于生成Entity时字段自动备注中文名称技巧
- 二维矢量绘图
- 003Java分支结构
- Eclipse下maven项目自动打war包丢失jar包问题解决方法
- Android通过adb命令实现模拟滑动
- 搜狗面板程序加载失败,请重启以使用输入法! ubuntu12.04
- linux下sysctl()函数初探
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- centos学习 拾零之如何安装rar
- java基础之-IO(下)
- UItextField限制字符输入的个数
- NGUI之UIButton"禁用"状态时置灰
- Eclipse中启动tomcat 浏览器无法访问8080端口