NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 ADB 안드로이드 앱플레이어에서 찾기 영역에 대한 이해.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 녹스나 엘디 또는 모모나 블루스택과 같은 안드로이드 앱플레이어에서 비활성으로 업무를 자동화하는 방법은 크게 2가지입니다. 첫번째는 [ 핸들 추가 ] 액션을 이용한 윈도우 API를 사용하는 방법이고, 두번째는 [ ADB(Android Debug Bridge) ]를 사용하는 방법입니다. 이 2가지 방식에 대한 차이점은 [ 여기 ] 글을 한번 읽어보세요^^

    ※ 비활성 매크로에서 찾기 영역 설정은 이미지를 캡쳐한 창에서 찾기 영역을 설정해야 합니다.

     

    오늘의 주제인 비활성 상태에서 찾기 영역 동작에 대해 알아보도록 하겠습니다. 찾기 영역은 이미지 조건들(이미지 서치, 이미지 매치등등...)에 포함되어 있는 하나의 옵션입니다. 이미지 조건이 동작하는 방식은 생각보다 단순합니다. 사용자가 미리 캡쳐해둔 "A 이미지"를 가져와서 매크로가 실행될 때 윈도우 화면을 캡쳐한 이미지 안에서 "A 이미지"를 찾는 방식입니다. 그런데 동일한 이미지가 여러곳에 있으면 어떻게 해야 할까요? 특정 영역 안에서만 "A 이미지"를 찾으면 됩니다. 아래 그림에서 화면 중앙에 있는 물음표(?)를 찾는다고 생각 해보세요.

    IYIKDzb.jpg

     

     

    아래 동영상과 같이 [ 이미지 서치 ]나 [ 이미지 매치 ] 액션의 찾기 영역을 설정할 수 있습니다.

    J5N6LdL.gif

     

     

    찾기 영역을 설정하면 이미지 조건들의 속도가 빨라집니다. 여러가지 상황에 따라 다르겠지만, 최소 두배 이상 속도가 개선될겁니다. 이유는 간단한데요. 찾는 이미지를 바늘이라고 생각해보세요. 바늘을 집 전체에서 찾는것보다 방 또는 바구니에서 찾는게 훨씬 빠를겁니다. 이제 안드로이드 앱플레이어(녹스, 엘디, 모모, 미뮤, 블루스택, SCRCPY등등...)를 실행하세요. 그리고, 아래 그림과 같이 Tools를 이미지 매치에서 캡쳐했습니다.

    KHahuNw.png

     

     

    정상적으로 찾아지는지 테스트를 위해 클릭을 설정 해줍니다.

    W3yq4to.gif

     

     

    정상적으로 Tools 이미지를 찾아서 클릭했습니다. 이 때 제 컴퓨터 기준 속도는 0.683초가 걸렸습니다. 이번에는 찾기 영역을 설정하고 다시 테스트 해보도록 하겠습니다.

    zsl30NM.gif

     

     

    제 모니터 해상도 기준 1920x1080(FHD)에서 Tools 이미지를 찾는데 0.683초가 걸렸는데요. 찾기 영역으로 184x151을 설정한 후 0.091초가 걸렸습니다. 대략 7배 정도 성능이 향상된 것을 알 수 있습니다. 넓은 공간에서 이미지를 찾는것보다는 좁은 공간에서 찾는게 아무래도 빠르겠죠^^; 이번에는 창을 이동한 후 다시 실행 해보도록 하겠습니다. 아래 그림과 같이 녹스 플레이어를 이동시킨 후 이미지 매치를 실행 했습니다. 이미지를 찾을 수 없었습니다.

    1NL0jEm.png

     

     

    위에서 왜 이미지를 못찾았을까요? 아래와 같이 이미지 찾기 영역을 확인 해보세요. 찾기 영역 안에 Tools 이미지가 없기 때문입니다.

    lgyU9tg.gif

     

     

    이번에는 [ 핸들을 추가 ]하고, 다시 실행 해볼까요?

    YZtcrDY.gif

     

     

    핸들을 추가하면, 이미지 찾기 영역은 그대론데 정상적으로 클릭이 발생합니다. 이미지를 잘 찾았다는 의미인데요. 이렇게 동작하는 이유는 핸들이 추가되면 핸들 값에 따라 위치가 내부적으로 보정되기 때문입니다. 이미지 캡쳐 당시에 프로그램의 위치를 이미지 내부에 저장 해둡니다. 그리고, 핸들을 추가하면 핸들 프로그램의 위치를 가져와서 이미지 캡쳐 당시의 위치와 비교한 후 좌표를 다시 계산해서 처리합니다.

    CNzTsAX.gif

     

     

    이미지 캡쳐할 때 녹스의 위치가 100x100이라고 생각 해보세요. 핸들을 추가하면, 매크로가 실행될 때 핸들에 설정된 프로그램의 위치를 가져옵니다. 이 때 녹스의 위치가 200x200이라고 한다면, 처음 100x100에서 200x200으로 이동한 차이 100x100을 현재 200x200에서 빼줍니다. 그러면 100x100위치가 되므로 좌표는 동일한 위치를 클릭할 수 있게됩니다. 쉽게 말해서 처음 위치에서 이동한 거리만큼 계산해서 좌표에 반영해준다는 뜻입니다. 이렇게 보정된 값을 스크립트에 갱신하면 문제가 될 수 있기 때문에 내부적으로만 계산되고, 스크립트의 액션에 변경된 위치를 업데이트하지는 않습니다. 그래서, 마우스 좌표나 찾기 영역과 같은 값은 변경되지 않는겁니다. 이번에는 ADB를 추가하고, 다시 테스트 해볼까요?

    ZH8cqDJ.gif

     

     

    ADB는 콘트롤의 핸들을 가지고 있지 않기 때문에 클릭할 수 없습니다. 이전 위치와 현재 위치를 계산할 수 없기 때문입니다. 따라서, ADB를 사용하는 경우에는 창 위치를 고정시킨 후 사용하는게 좋습니다. 아래 동영상과 같이 안드로이드 앱플레이어 매크로를 만들 때 처음 위치를 설정해두고 스크립트를 제작해야 합니다.

    BxzcEaD.gif

     

     

    ADB와 핸들을 하이브리드 형태로 사용할 수 있습니다. 이미지 조건 액션들은 핸들로 처리하고, 마우스와 키보드는 ADB를 사용하는 것입니다. 이미지 매치 위아래에 핸들 추가와 핸들 삭제를 넣어주면 정상 동작합니다. 물론, 다클라에 신호를 주는것도 잘 동작하게 됩니다. 참고로, 마우스 이펙트가 표시되지 않는다는 의미는 ADB 신호로 잘 변환되었다는 뜻입니다.

    mQuz5jP.gif

     

     

    간단하게 ADB 인터페이스를 사용할 때 찾기 영역을 어떻게 사용해야 하는지 알아보았습니다. 기존 작성 방법보다는 다소 복잡한 부분이 있기는 하지만, 하이브리드 방식을 사용하면 좀 더 효율적이고 정확하게 동작하는 매크로를 만들 수 있기도 합니다. 이외에도 활성, 비활성 모드와도 잘 조합해서 사용한다면 더 좋은 결과물이 나오지 않을까 생각합니다^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.