2013-04-01 2 views
1

필자는 안드로이드 폰으로 PC 마우스를 제어 할 수있는 곳에서 마침내 내 응용 프로그램을 개발했습니다. 마우스를 제어하기 위해 터치 스크린을 사용하고 있습니다.내 휴대 전화의 화면 좌표를 내 PC 화면에 어떻게 매핑합니까?

문제는 마우스 커서가 휴대 전화의 화면 크기로 제한된 특정 영역 내에서만 움직이는 것입니다. 커서를 어디든 움직일 수 있기를 원합니까? 어떤 종류의 매핑이 필요합니까?

public boolean onTouchEvent(MotionEvent evt) 
{ 
    String coords = Math.round(evt.getX()) + ", " + Math.round(evt.getY()); 

    Log.d(TAG, coords); 

    msgIO.sendMessage(soc, coords); 

    return true; 
} 

가 명확히하기 위해 : 전화의 화면은 300x700으로 제한됩니다 말하고 PC 화면은 1080x720입니다 내가 전화에서 내 좌표를 보내고 방법

이입니다. 이제 휴대폰의 터치 스크린을 사용하여 좌표를 보내면 300x700 직사각형 내에서 PC 쪽 마우스 커서 만 움직입니다. 1080x720 직사각형 내에서 이동하고 싶습니다.

+0

도움이 필요하면 그 이상의 정보를 제공해야합니다. 당신이 지금 어떻게 그 일을하고 있는지 설명해 주시겠습니까? – dcow

+0

앱을 개발해야만해도 나쁘지 만, Google 직원이 작성한 오픈 소스 프로젝트가있어 컴퓨터의 전체 화면에서 커서를 움직일 수 있습니다. –

+0

앱이 있다는 것을 알고 있습니다. 나는 그 개념을 이해하기 위해 직접 노력하고 싶다. – infinitloop

답변

1

수학으로 해결할 수 있다고 생각합니다.

PC에 4 개의 매개 변수를 전송해야합니다. PC 측면에서

String coords = Phone_Touched_X; 
coords += ", " 
coords += Phone_Touched_Y 
coords += ", " 
coords += Phone_Screen_X 
coords += ", " 
coords += Phone_Screen_Y 

:

Position_X = PC_Screen_X * Phone_Touched_X/Phone_Screen_X; 
Position_Y = PC_Screen_Y * Phone_Touched_Y/Phone_Screen_Y; 

예 :

당신은 300x700 전화기 화면에 200,200을 만졌다. 그리고 1080x720 PC로 보내십시오.

Position_X = 1080 * 200/300 = 720 
Position_Y = 720 * 200/700 = 205 

휴대 전화를 세로 모드로 작동하는 경우에도 고려해야합니다. 이 경우 300x700 대신 700x300을 전달해야합니다.

Position_X = 1080 * 200/700 = 308 
Position_Y = 720 * 200/300 = 480 
관련 문제