Как установить позицию для события InputDriver.emit ()? - PullRequest
0 голосов
/ 23 мая 2018

У меня есть сенсорная панель Android Things 1.0 Raspberry Pi 3 и 800x480 (width / height), и мне нужно отслеживать прикосновения пользователей к ней для элементов управления Activity.Я получил сенсорные x и y координаты с сенсорной панели и попытался сгенерировать сенсорное событие Android с таким кодом:

private InputDriver mInputDriver;
private InputDriverEvent mInputDriverEvent = new InputDriverEvent();

...
int x = getTouchX();     // returns x within [0, 800]
int y = getTouchY();     // returns y within [0, 480]
mInputDriverEvent.clear();
mInputDriverEvent.setPosition(MotionEvent.AXIS_X, x);
mInputDriverEvent.setPosition(MotionEvent.AXIS_Y, y);
mInputDriverEvent.setContact(true);

mInputDriver.emit(mInputDriverEvent);
...

, где mInputDriver инициализирован таким образом:

mInputDriver = new InputDriver.Builder()
    .setName("TouchPad")
    .setVendorId(0)
    .setProductId(0)
    .setAxisConfiguration(MotionEvent.AXIS_X, 0, 800, 0 ,0)
    .setAxisConfiguration(MotionEvent.AXIS_Y, 0, 480, 0 ,0)
    .build();
UserDriverManager.getInstance().registerInputDriver(mInputDriver);

событие генерировалось для каждого касания, но указатель (курсор) всегда находится в центре экрана:

Touch point and pointer (cursor) position

Как переместить указатель (курсор)в (x,y) положение на экране?

...