使用 adb 向 Android 手机发出捏合/捏合命令

2024-02-10

到目前为止,我可以使用 adb 命令点击、滑动、解锁、安装/卸载和启动应用程序,但无法找到如何使用 adb 命令执行放大/缩小。

我已经获得了捏入/捏出的坐标,但不知道如何使用终端的 adb 命令来触发它们。

例如,我们有命令 --> adb shell input tap x y 所以在这里我们可以用值/坐标替换 x 和 y 类似地我想知道模拟捏合/捏合的方法。

我获得的捏合坐标如下。

{"id":0,"dumb":[{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":607.4264705882354}],"action":0},{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":607.4264705882354},{"id":1,"pressure":1,"x":327.05882352941177,"y":672.5735294117648}],"action":261},{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":609.7794117647059},{"id":1,"pressure":1,"x":327.05882352941177,"y":670.2205882352941}],"action":2},{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":612.1323529411765},{"id":1,"pressure":1,"x":327.05882352941177,"y":667.8676470588235}],"action":2},{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":616.8382352941177},{"id":1,"pressure":1,"x":327.05882352941177,"y":663.1617647058823}],"action":2},{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":626.25},{"id":1,"pressure":1,"x":327.05882352941177,"y":653.75}],"action":2},{"events":[{"id":0,"pressure":1,"x":392.94117647058823,"y":630.9558823529412},{"id":1,"pressure":1,"x":327.05882352941177,"y":649.0441176470589}],"action":2},{"events":[{"id":0,"pressure":1,"x":395.29411764705884,"y":635.6617647058823},{"id":1,"pressure":1,"x":324.70588235294116,"y":644.3382352941177}],"action":2},{"events":[{"id":0,"pressure":1,"x":397.64705882352945,"y":642.7205882352941},{"id":1,"pressure":1,"x":322.3529411764706,"y":637.2794117647059}],"action":2},{"events":[{"id":0,"pressure":1,"x":400,"y":649.7794117647059},{"id":1,"pressure":1,"x":320,"y":630.2205882352941}],"action":2},{"events":[{"id":0,"pressure":1,"x":402.3529411764706,"y":656.8382352941177},{"id":1,"pressure":1,"x":317.64705882352945,"y":623.1617647058823}],"action":2},{"events":[{"id":0,"pressure":1,"x":402.3529411764706,"y":661.5441176470589},{"id":1,"pressure":1,"x":317.64705882352945,"y":618.4558823529412}],"action":2},{"events":[{"id":0,"pressure":1,"x":404.7058823529412,"y":668.6029411764706},{"id":1,"pressure":1,"x":315.29411764705884,"y":611.3970588235294}],"action":2},{"events":[{"id":0,"pressure":1,"x":404.7058823529412,"y":673.3088235294118},{"id":1,"pressure":1,"x":315.29411764705884,"y":606.6911764705883}],"action":2},{"events":[{"id":0,"pressure":1,"x":404.7058823529412,"y":680.3676470588235},{"id":1,"pressure":1,"x":315.29411764705884,"y":599.6323529411765}],"action":2},{"events":[{"id":0,"pressure":1,"x":407.05882352941177,"y":685.0735294117648},{"id":1,"pressure":1,"x":312.94117647058823,"y":594.9264705882354}],"action":2},{"events":[{"id":0,"pressure":1,"x":407.05882352941177,"y":687.4264705882354},{"id":1,"pressure":1,"x":312.94117647058823,"y":592.5735294117648}],"action":2},{"events":[{"id":0,"pressure":1,"x":409.4117647058824,"y":689.7794117647059},{"id":1,"pressure":1,"x":310.5882352941177,"y":590.2205882352941}],"action":2},{"events":[{"id":0,"pressure":1,"x":411.7647058823529,"y":694.4852941176471},{"id":1,"pressure":1,"x":308.2352941176471,"y":585.5147058823529}],"action":2},{"events":[{"id":0,"pressure":1,"x":411.7647058823529,"y":699.1911764705883},{"id":1,"pressure":1,"x":308.2352941176471,"y":580.8088235294118}],"action":2},{"events":[{"id":0,"pressure":1,"x":414.11764705882354,"y":706.25},{"id":1,"pressure":1,"x":305.88235294117646,"y":573.75}],"action":2},{"events":[{"id":0,"pressure":1,"x":416.47058823529414,"y":713.3088235294118},{"id":1,"pressure":1,"x":303.5294117647059,"y":566.6911764705883}],"action":2},{"events":[{"id":0,"pressure":1,"x":418.8235294117647,"y":715.6617647058824},{"id":1,"pressure":1,"x":301.1764705882353,"y":564.3382352941177}],"action":2},{"events":[{"id":0,"pressure":1,"x":418.8235294117647,"y":718.0147058823529},{"id":1,"pressure":1,"x":301.1764705882353,"y":561.9852941176471}],"action":2},{"events":[{"id":0,"pressure":1,"x":418.8235294117647,"y":720.3676470588235},{"id":1,"pressure":1,"x":301.1764705882353,"y":559.6323529411765}],"action":2},{"events":[{"id":0,"pressure":1,"x":421.1764705882353,"y":727.4264705882354},{"id":1,"pressure":1,"x":298.8235294117647,"y":552.5735294117648}],"action":2},{"events":[{"id":0,"pressure":1,"x":421.1764705882353,"y":732.1323529411765},{"id":1,"pressure":1,"x":298.8235294117647,"y":547.8676470588235}],"action":2},{"events":[{"id":0,"pressure":1,"x":423.5294117647059,"y":739.1911764705883},{"id":1,"pressure":1,"x":296.47058823529414,"y":540.8088235294118}],"action":2},{"events":[{"id":0,"pressure":1,"x":425.88235294117646,"y":746.25},{"id":1,"pressure":1,"x":294.11764705882354,"y":533.75}],"action":2},{"events":[{"id":0,"pressure":1,"x":425.88235294117646,"y":753.3088235294118},{"id":1,"pressure":1,"x":294.11764705882354,"y":526.6911764705883}],"action":2},{"events":[{"id":0,"pressure":1,"x":428.2352941176471,"y":758.0147058823529},{"id":1,"pressure":1,"x":291.7647058823529,"y":521.9852941176471}],"action":2},{"events":[{"id":0,"pressure":1,"x":435.29411764705884,"y":765.0735294117648},{"id":1,"pressure":1,"x":284.70588235294116,"y":514.9264705882354}],"action":2},{"events":[{"id":0,"pressure":1,"x":440,"y":769.7794117647059},{"id":1,"pressure":1,"x":280,"y":510.22058823529414}],"action":2},{"events":[{"id":0,"pressure":1,"x":440,"y":779.1911764705883},{"id":1,"pressure":1,"x":280,"y":500.80882352941177}],"action":2},{"events":[{"id":0,"pressure":1,"x":444.7058823529412,"y":788.6029411764706},{"id":1,"pressure":1,"x":275.29411764705884,"y":491.39705882352945}],"action":2},{"events":[{"id":0,"pressure":1,"x":451.7647058823529,"y":800.3676470588235},{"id":1,"pressure":1,"x":268.2352941176471,"y":479.63235294117646}],"action":2},{"events":[{"id":0,"pressure":1,"x":456.47058823529414,"y":812.1323529411765},{"id":1,"pressure":1,"x":263.5294117647059,"y":467.86764705882354}],"action":2},{"events":[{"id":0,"pressure":1,"x":461.1764705882353,"y":821.5441176470589},{"id":1,"pressure":1,"x":258.8235294117647,"y":458.4558823529412}],"action":2},{"events":[{"id":0,"pressure":1,"x":465.88235294117646,"y":833.3088235294118},{"id":1,"pressure":1,"x":254.11764705882354,"y":446.69117647058823}],"action":2},{"events":[{"id":0,"pressure":1,"x":470.5882352941177,"y":840.3676470588235},{"id":1,"pressure":1,"x":249.41176470588235,"y":439.63235294117646}],"action":2},{"events":[{"id":0,"pressure":1,"x":475.29411764705884,"y":847.4264705882354},{"id":1,"pressure":1,"x":244.7058823529412,"y":432.5735294117647}],"action":2},{"events":[{"id":0,"pressure":1,"x":477.64705882352945,"y":854.4852941176471},{"id":1,"pressure":1,"x":242.3529411764706,"y":425.5147058823529}],"action":2},{"events":[{"id":0,"pressure":1,"x":482.3529411764706,"y":863.8970588235294},{"id":1,"pressure":1,"x":237.64705882352942,"y":416.1029411764706}],"action":2},{"events":[{"id":0,"pressure":1,"x":484.7058823529412,"y":870.9558823529412},{"id":1,"pressure":1,"x":235.29411764705884,"y":409.04411764705884}],"action":2},{"events":[{"id":0,"pressure":1,"x":489.4117647058824,"y":875.6617647058824},{"id":1,"pressure":1,"x":230.58823529411765,"y":404.3382352941177}],"action":2},{"events":[{"id":0,"pressure":1,"x":489.4117647058824,"y":878.0147058823529},{"id":1,"pressure":1,"x":230.58823529411765,"y":401.9852941176471}],"action":2},{"events":[{"id":0,"pressure":1,"x":491.764705882353,"y":882.7205882352941},{"id":1,"pressure":1,"x":228.23529411764707,"y":397.2794117647059}],"action":2},{"events":[{"id":0,"pressure":1,"x":494.11764705882354,"y":885.0735294117648},{"id":1,"pressure":1,"x":225.88235294117646,"y":394.9264705882353}],"action":2},{"events":[{"id":0,"pressure":1,"x":496.47058823529414,"y":892.1323529411765},{"id":1,"pressure":1,"x":223.52941176470588,"y":387.86764705882354}],"action":2},{"events":[{"id":0,"pressure":1,"x":501.1764705882353,"y":899.1911764705883},{"id":1,"pressure":1,"x":218.82352941176472,"y":380.80882352941177}],"action":2},{"events":[{"id":0,"pressure":1,"x":503.5294117647059,"y":908.6029411764706},{"id":1,"pressure":1,"x":216.47058823529412,"y":371.39705882352945}],"action":2},{"events":[{"id":0,"pressure":1,"x":505.88235294117646,"y":908.6029411764706},{"id":1,"pressure":1,"x":214.11764705882354,"y":371.39705882352945}],"action":2},{"events":[{"id":0,"pressure":1,"x":505.88235294117646,"y":910.9558823529412},{"id":1,"pressure":1,"x":214.11764705882354,"y":369.04411764705884}],"action":2},{"events":[{"id":0,"pressure":1,"x":505.88235294117646,"y":913.3088235294118},{"id":1,"pressure":1,"x":214.11764705882354,"y":366.69117647058823}],"action":2},{"events":[{"id":0,"pressure":1,"x":505.88235294117646,"y":913.3088235294118}],"action":1},{"events":[{"id":0,"pressure":1,"x":505.88235294117646,"y":913.3088235294118},{"id":1,"pressure":1,"x":214.11764705882354,"y":366.69117647058823}],"action":262}],"eventType":"MOTION"}

你可以使用adb getevent and sendevent.
使用以下方式连接您的设备adb。请按照以下步骤操作。

  1. 识别您的输入设备:
    打开设备上的任何图像。要列出输入设备,请运行

    $ adb shell getevent   
    add device 1: /dev/input/event7   
    name:     "msm8226-tapan9302-snd-card Headset Jack"
    add device 2: /dev/input/event6
      name:     "msm8226-tapan9302-snd-card Button Jack"
    add device 3: /dev/input/event2
      name:     "synaptics_dsx_i2c"
    add device 4: /dev/input/event4
      name:     "qpnp_pon"
    

    在图像上捏合/张开,您应该看到一些连续的日志,例如

    /dev/input/event2: 0003 0030 00000005
    /dev/input/event2: 0000 0000 00000000
    /dev/input/event2: 0003 002f 00000000
    /dev/input/event2: 0003 0036 00000144
    /dev/input/event2: 0003 003a 00000079
    /dev/input/event2: 0000 0000 00000000
    /dev/input/event2: 0003 0036 00000142
    

    确认/dev/input/event2是我的目标设备的输入设备名称。

  2. 得到准确的getevent并转换getevent to sendevent:

    确保您的屏幕已打开并且打开并显示一些图像,
    在提示符下运行以下命令。

    $ adb shell getevent | grep dev/input/event2 > getevent_input.txt
    

    当上面的命令运行时,在手机上的图像上捏合/张开。

    Once completed, Kill the above command Ctrl + C
    Open file getevent_input.txt and delete first line "add device X: /dev/input/eventX" from it.

    Since getevent返回十进制值,并且sendevent取十六进制值。
    我们要做上面的转换。
    这个脚本hex_to_dec.py http://pastebin.com/W3jNzPsv工作就在这里完成。谢谢this http://qatesttech.wordpress.com/2012/06/21/turning-the-output-from-getevent-into-something-something-that-can-be-used/ guy!

    $./hex_to_dec.py  getevent_input.txt 
    

    生成一个文件getevent_input.scr,现在将此文件重命名为.sh

    $ mv getevent_input.scr  sendevent_input.sh
    

    打开文件sendevent_input.sh并删除第二行"echoing – drawing function"并保存它。

  3. 在设备上运行。
    转移sendevent_input.sh到设备。

    $ adb push sendevent_input.sh /sdcard/
    1615 KB/s (64379 bytes in 0.038s)
    

    确保您的设备已打开图像,并且屏幕未关闭。

    $ adb shell sh /sdcard/sendevent_input.sh
    

对我来说效果很好,如果这就是您所寻找的。
要获得可见的结果,请启用Show touches https://i.stack.imgur.com/JeucG.jpg在开发者选项中。

环境:Motorola Moto G (Android 4.4.4) with ADB (v 1.0.31) on Ubuntu 12.04.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 adb 向 Android 手机发出捏合/捏合命令 的相关文章

随机推荐

  • 如何从 Java 读取 Windows 和 Linux 上的文件

    我有一个 xml 文件位于D XML RequestXML我正在从该文件夹中读取 xml 文件FileReader 在我的程序中 我硬编码了文件路径 XML RequestXML 这适用于windows环境 在窗口中JBoss is in
  • uwp语音识别

    I made a simple UWP application to test speech recognition function But I have some error it shows System UnauthorizedAc
  • 如何使哈希码(整数值)为正

    int x 10 int y x hashcode 0xfffffff 上面的代码怎么总是使y positive 谢谢 x hashcode 0xfffffff将关闭标志位 Math abs此处未使用 因为如果它返回负数x hashCode
  • 选择两个日期中的最小值

    我想做以下事情 SELECT min date 1 date 2 from dual 但这会严重失败 因为 min 只接受一个参数 还有别的办法吗 SELECT LEAST date 1 date 2 FROM DUAL Oracle LE
  • 在 npm 包全局安装上获取“npm ERR!code EPEERINVALID”

    每当我安装任何全局包时 我都会收到此错误 错误 在 npm 包全局安装上 例如 robins robins H61MLV3 sudo npm install g jshint usr bin jshint gt usr lib node m
  • jni.h:没有这样的文件或目录

    我在 Windows 中使用 Code Blocks 我创建了一个 dll 项目试图获得一些 JNI 实践 在我的javah生成的 h文件中 有 include jni h 但是当我尝试编译它时 它一直说jni h 没有这样的文件或目录 我
  • Coldfusion 10 returnformat =“JSON”添加字符

    我有一个正在从 CF8 转换为 CF10 的应用程序 而我的一些远程 CFC 返回的数据应该是 JSON 现在失败了 因为返回的数据前面似乎有一个 例如 这是返回结构的输出 SUCCESS true ERRORS DATA COLUMNS
  • 如何使用 Axios NPM 库执行带有 XML SOAP 参数的 GET 请求?

    Axios 允许您使用查询和参数运行 GET 查询 有没有办法将 XML SOAP 参数传递到 Axios 请求中 await Axios get url params xmls Is it this data xmls Is it thi
  • 如何从测试覆盖率中排除 Dagger2 类

    是否有任何选项可以从 Android Studio 的测试覆盖率报告中排除 Dagger2 类 JaCoCo 排除 如果您使用 JaCoCo 例如使用 android 仪器连接测试 您需要配置excludes 或包括 根据文档 http w
  • Meteor:将图像从 url 保存到 AWS S3 存储

    我正在尝试在服务器端通过其网址从网络获取图像 即http www skrenta com images stackoverflow jpg http www skrenta com images stackoverflow jpg 并使用
  • 无法取消对 EJB 的 @Asynchronous 调用

    在这个最简单的例子中我做错了什么 Glassfish 4 0 b87 Eclipse 开普勒 m6 我自己 java package com example cancelbug import java util concurrent Exe
  • Three.js - 对象跟随鼠标位置

    我正在创建一个球体Three js每当鼠标移动时它都必须跟随鼠标 如图所示这个例子 https stemkoski github io Three js Mouse Sprite html 处理鼠标移动的函数如下 function onMo
  • 无法复制到 Windows 10 上的 Windows 容器(“docker cp”)

    我在笔记本电脑上设置了适用于 Windows 的 Docker 然后从Linux容器 to Windows容器在 Docker 的设置中 这会提示几次重新启动和 Windows 更新 我提取了一个图像并使用以下命令运行基于它的容器 dock
  • 在具有不同根相对路径的代理后面运行 ASP.NET MVC 应用程序

    我在代理后面运行的 ASP NET MVC 应用程序中遇到路径问题 我们的 IIS 应用程序根路径是例如http 服务器 MyApp http server MyApp 意味着使用应用程序根目录的所有 url Url Action MyAc
  • 实体框架 - 附加实体 - 附加导航属性?

    我有以下通用代码来更新断开连接的实体 public T UpdateItem T entity this dbSet Attach entity this dbContext Entry entity State System Data E
  • 如何让 Install4j 对所有内容进行签名?

    如何更改 Mac OS X 上 install4j 的协同签名对哪些文件进行签名 具体来说 我的应用程序的所有文件 包括其 jar 文件 都没有经过签名 这完全违背了代码签名的目的 所以 我想解决这个问题 我也想在 Windows 上做同样
  • SymPy 中的非顺序替换

    我正在尝试使用 SymPy 1 同时替换表达式中的多个术语 我尝试使用字典作为参数的 subs 函数 2 但发现它是按顺序替换的 In a subs a b b c Out c 问题是第一次替换产生的术语可以被第二次替换所替换 但它不应该
  • Microsoft.Build.BuildEngine.Engine 在构建 WPF 应用程序时抛出错误

    我正在使用 Microsoft Build BuildEngine Engine 构建 WPF 应用程序 这对于类库和 Web 应用程序来说已经成功运行 但现在尝试使用它来构建 WPF 应用程序时 我收到以下错误 目标标记CompilePa
  • powershell 文件名唯一部分列表

    我有多台机器将文件上传到一个 FTP 目录 文件名的第一部分是机器 其余部分是时间戳 例如AAAAA 20130312 125113 现在我想获取已上传到此目录的所有唯一计算机的排序列表 我设法将丢失的所有 filenames substr
  • 使用 adb 向 Android 手机发出捏合/捏合命令

    到目前为止 我可以使用 adb 命令点击 滑动 解锁 安装 卸载和启动应用程序 但无法找到如何使用 adb 命令执行放大 缩小 我已经获得了捏入 捏出的坐标 但不知道如何使用终端的 adb 命令来触发它们 例如 我们有命令 gt adb s