zoukankan      html  css  js  c++  java
  • [Android]通过adb shell input上报命令模拟屏幕点击事件【转】

    本文转载自:http://blog.csdn.net/yuanzihui/article/details/52871652

    常用的 input上报命令: 
    input text 1234 实际向界面注入1234文字,有输入框,能明显看到效果 
    input keyevent 4 键盘事件,4 为返回 
    input tap 100 300 单击触屏事件 ,模拟点击x=100 y = 300 位置 
    input swipe 100 300 500 300 触屏滑动事件,模拟滑动,从x =100 
    y = 300 滑动到x=500 y=300位置 
    input press 模拟按下轨迹球 
    input roll 100 300 模拟轨迹球滑动 x 方向100 y方向300

    获取坐标方法: 
    第一步:计算比例

    adb shell getevent -p | grep -e “0035” -e “0036” 
    获得event 体系里 宽(0035)和高(0036)

    以当前我使用的手机为例,命令会输出如下信息: 
    0035 : value 0, min 0, max 1602, fuzz 0, flat 0, resolution 0 
    0036 : value 0, min 0, max 2503, fuzz 0, flat 0, resolution 0

    0035(宽) max 1602 
    0036(高) max 2503

    计算比例(用已知的屏幕分辨率,如1080p即:1080(宽) * 1920(高)): 
    rateW = 1080(手机屏幕的宽) / 1602(event里0035的max) = 0.674 
    rateH = 1920(手机屏幕的高) / 2503(event里0036的max) = 0.767

    第二步:点击屏幕计算点击位置的坐标 
    adb shell getevent | grep -e “0035” -e “0036” 
    点击屏幕上需要的位置,会有如下输出: 
    /dev/input/event0: 0003 0035 00000341 
    /dev/input/event0: 0003 0036 000008ec

     把0035和0036后面的位置数据从16进制转化为10进制 
    width = 0x341 = 3*16*16 + 4*16 + 1 = 833 
    height = 0x8ec = 8*16*16 + 14*16 + 12 = 2284 
    这是在event体系里的位置,将其转化为屏幕位置 
    screenW = width*rateW = 833*0.674 = 561 
    screenH = height*rateH = 2284*0.767 = 1751

    终于算出来了 
    刚刚点击的屏幕位置坐标就是(561, 1751)

  • 相关阅读:
    WCF 绑定(Binding)
    WCF 配置服务 (02)
    WCF 双工模式
    .NET开源高性能Socket通信中间件Helios介绍及演示
    关于WCF服务在高并发情况下报目标积极拒绝的异常处理
    HTTP状态管理机制之Cookie
    JavaScript 总结几个提高性能知识点
    windows下nginx安装、配置与使用
    Windows下Nginx的安装与配置
    大型架构.net平台篇(WEB层均衡负载nginx)
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7746635.html
Copyright © 2011-2022 走看看