2014-12-13 5 views
0

Google Nexus 4를 사용 중이며 PC에서 마우스 커서를 제어하는 ​​앱을 작성하려고합니다. 더 구체적으로 말하면, 나는 오른쪽으로 휴대 전화를 움직일 때, 마우스 커서도 오른쪽으로 이동해야합니다.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

사실, 나는 즉시 위치에서 변화를 찾으려고 노력하고있다. 그런 다음 PC를 보내서 커서의 새 위치를 설정하십시오. 그렇게하기 위해 당신이 제안 할 수있는 다른 방법이 있습니까? (그런데, 나쁜 영어로 인해 나 자신을 표현하기 위해 잘못된 용어를 사용할 수도 있습니다. 정말 유감입니다.) – cemm