2015-04-09 3 views
1

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

@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()); 
      } 
     } 
} 

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

+0

Какова ценность 'values'? Возможно, вы теряете точность при анализе на 'int'? Я полагаю, это зависит от того, будет ли 'moveMouse (x, y)' принимает только 'int' как параметры – Ian2thedv

ответ

1

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

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

Смежные вопросы