【问题标题】:Nexus one ignores touch events sent via ADBNexus one 忽略通过 ADB 发送的触摸事件
【发布时间】:2011-12-14 08:28:53
【问题描述】:

我正在通过 USB(使用 ADB)将 HTC Nexus One 连接到我的 PC,运行 Android 2.3.6,并启用了调试模式。 像这样发送单个密钥,工作!

adb shell input keyevent 82
adb shell input keyevent 20
adb shell input keyevent 20
adb shell input keyevent 22
adb shell input keyevent 22
adb shell input keyevent 22
adb shell input keyevent 66

但是,发送这样的触摸事件失败

adb shell sendevent /dev/input/event3 0003 48 104
adb shell sendevent /dev/input/event3 0003 50 10
adb shell sendevent /dev/input/event3 0003 53 200
adb shell sendevent /dev/input/event3 0003 54 57
adb shell sendevent /dev/input/event3 0000 2 00000000
adb shell sendevent /dev/input/event3 0003 18 47
adb shell sendevent /dev/input/event3 0003 20 00000001
adb shell sendevent /dev/input/event3 0000 0000 00000000
adb shell sendevent /dev/input/event3 0003 48 00000000
adb shell sendevent /dev/input/event3 0003 50 10
adb shell sendevent /dev/input/event3 0003 53 200
adb shell sendevent /dev/input/event3 0003 54 57
adb shell sendevent /dev/input/event3 0000 0002 00000000
adb shell sendevent /dev/input/event3 0003 18 32
adb shell sendevent /dev/input/event3 0003 20 00000000
adb shell sendevent /dev/input/event3 0000 0000 00000000

这是我从 getevents 得到的输出:

add device 1: /dev/input/event6

  name:     "mahimahi-nav"

add device 2: /dev/input/event5

  name:     "mahimahi-keypad"

add device 3: /dev/input/event4

  name:     "proximity"

add device 4: /dev/input/event3

  name:     "synaptics-rmi-touchscreen"

add device 5: /dev/input/event2

  name:     "compass"

add device 6: /dev/input/event1

  name:     "h2w headset"

add device 7: /dev/input/event0

  name:     "lightsensor-level"

任何想法或想法如何通过 ADB 发送触摸事件?

【问题讨论】:

  • 如何获得每个“事件#”的名称?我想买一个用于触摸屏的...

标签: android touch adb nexus-one


【解决方案1】:

我认为您需要设置 X 和 Y 轴接触点,然后尝试发送事件。另外,请确保将其转换为

adb shell sendevent /dev/input/event3 0003 48 104
adb shell sendevent /dev/input/event3 0003 50 10
adb shell sendevent /dev/input/event3 0003 53 200
adb shell sendevent /dev/input/event3 0003 54 57
adb shell sendevent /dev/input/event3 0000 2 00000000

转换成这样的十进制值(就像我只对第一行所做的那样,但您需要对所有人都这样做),

adb shell sendevent /dev/input/event3 3 72 260.

欲了解更多信息,请查看此链接http://softteco.blogspot.com/2011/03/android-low-level-shell-click-on-screen.html

【讨论】:

    【解决方案2】:

    我设法使用以下代码在 Nexus 7 (Android 4.2.0) 中模拟触摸点击:

    public static void performClick(int x, int y) {
    
        try {
            executeCommand("sendevent /dev/input/event0 3 57 21");
            executeCommand("sendevent /dev/input/event0 3 48 9");
            executeCommand("sendevent /dev/input/event0 3 58 182");
            executeCommand("sendevent /dev/input/event0 3 53 " + x);
            executeCommand("sendevent /dev/input/event0 3 54 " + y);
            executeCommand("sendevent /dev/input/event0 0 0 0");
            executeCommand("sendevent /dev/input/event0 3 57 4294967295");
            executeCommand("sendevent /dev/input/event0 0 0 0");
    
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TimeoutException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
    }
    
    private static void executeCommand(String command) throws InterruptedException, IOException, TimeoutException {
        CommandCapture cmd = new CommandCapture(0, command);
        RootTools.getShell(true).add(cmd).waitForFinish();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多