2014-12-13 4 views
0

Я использую Google Nexus 4 и пытаюсь написать приложение, которое управляет курсором мыши на ПК. Более сдержанно, когда я перемещаю телефон вправо, курсор мыши также должен двигаться вправо.Вычислить расстояние с помощью LINEAR_ACCELERATION

Я сейчас работаю только по оси x и следую инструкциям the document в this answer.

Но я не смог получить результат, которого я хотел. Когда я перемещаю телефон вправо, курсор перемещается вправо, и он перемещается влево. Вот часть моего кода:

@Override 
public void onSensorChanged(SensorEvent event) 
{ 
    // sampling acceleration 
    do 
    { 
     acceleration_x[1] = acceleration_x[1] + (int) event.values[0]; 
     count_x++; 

    } while (count_x < 64); 

    acceleration_x[1] = acceleration_x[1] >> 6; 

    count_x = 0; 

    //Mechanical Filtering 
    if((acceleration_x[1] <= 3) && (acceleration_x[1] >= -3)) 
     acceleration_x[1] = 0; 


    // first integration 
    velocity_x[1] = velocity_x[0] + acceleration_x[0] + 
      ((acceleration_x[1] - acceleration_x[0]) >> 1); 

    // second integration 
    position_x[1] = position_x[0] + velocity_x[0] + 
      ((velocity_x[1] - velocity_x[0]) >> 1); 

    acceleration_x[0] = acceleration_x[1]; 
    velocity_x[0] = velocity_x[1]; 


    sendData.sendPacket(position_x[1], 0); // sending data(x,y) to PC 

    movement_end_check(event); 

    position_x[0] = position_x[1]; 

} 

Формула интеграции и метод movement_end_check были взяты из документа.

Итак, вы можете помочь мне с этой проблемой?

+0

смотреть это http://m.youtube.com/watch?v=C7JQ7Rpwn2k – pskink

+0

Извините за поздний ответ, мне пришлось выйти из системы. Спасибо, я некоторое время искал эту тему, поэтому я уже несколько раз смотрел видео. Я согласен, что эта презентация действительно информативна, но нет образца кода для работы. Поскольку я новичок в этом вопросе, может быть полезным небольшой пример. – cemm

ответ

0

Вы никогда не увеличиваете позицию в списке скоростей/ускорений. Его всегда пишут 1. Это не так, как это работает - подумайте об этом, если всегда писать на 1 был ответ, почему есть массив?

+0

На самом деле, я пытаюсь найти изменение в мгновенном местоположении. Затем, отправляя компьютер, установите новое местоположение курсора. Чтобы сделать это, есть ли другой способ, который вы можете предложить? (кстати, я могу использовать неправильные термины, чтобы выразить себя из-за моего плохого английского языка. Очень жаль об этом.) – cemm

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