Nexus One игнорирует сенсорные события, отправленные через АБР

1

Я подключаю HTC Nexus One к своему компьютеру через USB (используя ADB), работая под управлением 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

Тем не менее, события Sending Touch как таковые, Fails

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"

Любые мысли или идеи, как я могу отправлять события касания через АБР?

  • 0
    Как вы получаете название каждого из «№ события»? Я хочу получить один для сенсорного экрана ...
Теги:
adb
touch
nexus-one

2 ответа

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

1

Мне удалось имитировать сенсорный щелчок в 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();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню