NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C# C# .NET 매크로 프로그램 만들기. (모바일 안드로이드 휴대폰 매크로 만들기 2부)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 1부에서 안드로이드 모바일 기기에서 터치(Touch)와 스와이프(Swipe)에 대해서 코딩하고 테스트를 해봤습니다. 오늘도 터치와 스와이프를 알아볼텐데요. 좌표 방식이 아닌 엘리먼트 방식으로 처리하도록 할께요. 그리고, 스와이프와는 약간 다른 드래그 앤 드롭도 같이 확인해보도록 하겠습니다. 자~ 우선, 앞서 만들었던 테스트 스크립트를 열고, 안드로이드 미러링 SCRCPY도 실행 해줍니다.

     

    마우스 좌표가 아닌 화면에 보이는 요소 이름으로 클릭하게 할 수 있습니다.

    QHHc2yZ.jpeg

     

     

    아래 원스토어를 클릭 해볼께요.

    U0I907m.jpeg

     

     

    요소 찾기에 아래 내용을 입력 해줍니다.

    //node[@text='원스토어']

    0Gxn5o6.jpeg

     

     

    아래 동영상과 같이 원스토어 앱을 클릭합니다.

     

     

    이번에는 스와이프를 해볼께요. 이 동작은 말 그대로 처음 시작 위치에서 끝 위치까지 손으로 쓸어 내리는 행위를 말합니다.

     

     

    위에서 스와이프로 처리할 수 없는 것들은 드래그 앤 드롭을 사용해야 합니다.

     

     

    미리 테스트를 해봤는데요. 이 내용들은 전부 ADB Shell 명령으로 만들 수 있습니다.

    case Definition.MobileMouseInputType.Swipe:
        if (Coordinate.IsEmpty && CoordinateEnd.IsEmpty)
        {
            var startElements = deviceClient.FindElements(StartFindElementByXpath).ToList();
            var endElements = deviceClient.FindElements(EndFindElementByXpath).ToList();
            so = startElements[StartElementIndex].Center;
            eo = endElements[EndElementIndex].Center;
            so.Offset(Offset);
            eo.Offset(Offset);
            deviceClient.Swipe(so, eo, SwipeSpeed);
        }
        else
            deviceClient.Swipe(start, end, SwipeSpeed);
        break;

     

    스와이프는 2가지로 처리할 수 있습니다. 코드는 단순해 보이지만, 이기종간에 좌표를 동기화 하기 위한 여러가지 설정들이 복잡하게 얽혀 있습니다. 예를 들어서 디바이스를 윈도우 화면에서 좌표를 설정하기 때문에 해당 좌표와 디바이스의 좌표는 당연히 다른 위치를 가리킬 수밖에 없습니다. 이 문제를 해결하기 위한 방법으로 디바이스 위치는 0, 0 좌표를 기준으로 하고, 윈도우 좌표는 해당 디바이스의 위치와 마우스 위치를 계산해서 보정해줘야 합니다.

     

    드래그 앤 드롭은 약간의 꼼수(?)와 아이디어를 복잡적으로 사용해야 구현할 수 있습니다. 기본적으로 터치 다운과 업 사이에 지연과 이동이 필요합니다. 실제로 사람이 동작하는것과 동일하게 만들어야 하는데요. 그래서, 아래와 같이 모션이벤트를 사용해야 구현할 수 있습니다.

    shell input touchscreen motionevent DOWN X1, Y1
    delay {speed}
    shell input touchscreen motionevent MOVE X2, Y2
    shell input touchscreen motionevent UP X2, Y2

     

    안드로이드 모바일 기기에서 터치, 스와이프, 드래그 앤 드롭까지 마우스와 관련된 내용을 모두 구현해봤습니다. 엔지엠 6 버전과 호환성을 위해서 윈도우 API의 마우스와 키보드에도 ADB 기능을 추가할 예정입니다. 이 부분은 비슷해서 다시 알아볼 필요는 없을듯하고, 오늘 구현한 내용들을 해당 속성과 매치시켜서 추가하면 쉽게 처리할 수 있을거 같아요. 코드를 재사용해서 빠르게 개발해놓고, 다음 내용으로 넘어가야겠네요^^

     

    이 글이 도움이 되셨다면~ 커피 한잔이라도 후원 부탁드립니다^^

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.