Как плавно перемещать курсор мыши с помощью Java?

Я пытаюсь использовать класс Robot для перемещения указателя мыши на основе показаний акселерометра, которые я получаю со своего устройства Android через Bluetooth. Проблема в том, что курсор мыши движется ступенчато. Мне нужен способ плавного перемещения, например, физического перетаскивания указателя. Вот что у меня есть до сих пор

@Override
public void serialEvent(SerialPortEvent serialPortEvent) {
        if(serialPortEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
            try {
                String inputLine = input.readLine();
                String[] values = inputLine.split(",");
                int x = Integer.parseInt(values[0])*(-1);
                int y = Integer.parseInt(values[1])*(-1);
                mouse.moveMouse(x, y);
                //System.out.println(inputLine);
            } catch (IOException e) {
                System.err.println(e.toString());
            }
        }
}

Здесь указатель мыши перемещается меньшими или большими шагами в зависимости от того, насколько сильно наклонен телефон. Но я хочу, чтобы он двигался быстрее или медленнее.


person Rashed Doha    schedule 09.04.2015    source источник
comment
Каково значение values? Возможно, вы теряете точность при синтаксическом анализе до int? Я думаю, это зависит от того, принимает ли moveMouse(x, y) только 'int в качестве параметров   -  person Ian2thedv    schedule 10.04.2015


Ответы (1)


То, что вы ищете, называется интерполяцией, и, вероятно, в Google есть куча результатов для этого. Но суть в том, что вам нужно выяснить, какие позиции находятся между вашими начальными и конечными позициями, и перемещаться по ним с течением времени.

В качестве альтернативы, похоже, вы можете просто уменьшить входные значения.

person Kevin Workman    schedule 09.04.2015