안드로이드 자동화 센서 시뮬레이터로

4083 단어 Android

tl;dr

  • Android emulator의 emulator Console을 사용하여 센서의 값을 읽거나 쓸 수 있음
  • 텔넷을 통해 emulator Console
  • 에 연결
  • 표준 입력에 명령을 지정하면 텔넷에서의 조작을 자동화할 수 있다
  • 일련의 명령 조작을 케이스 스크립트로 설명하면 자동화 센서의 모방률
  • 배경.


    회사에서 동료들이 스마트폰의 실기 흔들림 센서로 앱을 디버깅하기 때문에 이를 자동화할 수 없어 조사를 진행했다.

    Android emulator


    Android emulator는 다양한 센서의 값을 상호 시뮬레이션할 수 있습니다.
    안드로이드 에뮬레이터의Extended constrols를 켜고Virtual sensors를 켜면 CG가 그린 터미널을 대굴대굴 움직일 수 있다.

    emulator Console


    Android emulator 작업은 명령선을 통해 수행할 수 있습니다.
    emulator Constore를 열려면 Android emulator를 시작한 상태에서 다음 명령을 실행합니다.
    $ telnet localhost 5554
    
    5554 시뮬레이터의 포트 번호를 지정합니다.시뮬레이터의 포트 번호는 adb devices 등으로 조회할 수 있다.

    auth 명령


    emulator Console에서 help 또는 ?를 입력하면 사용 가능한 명령이 표시됩니다.
    그러나 이 상태에서는 후술한 명령sensor을 사용할 수 없다.그 이전auth에는 명령을 사용하여 인증해야 합니다.
    emulator Constore를 시작할 때 다음 정보가 표시되어야 합니다.
    Android Console: Authentication required
    Android Console: type 'auth <auth_token>' to authenticate
    Android Console: you can find your <auth_token> in
    '/Users/yourname/.emulator_console_auth_token'
    
    cat ~/.emulator_console_auth_token 등 내용을 표시하고 내용에 따라 auth 명령을 실행한다.OK가 표시되면 인증이 완료됩니다.help 명령에 사용할 수 있는 명령을 확인한 결과 sensor 등의 명령이 증가했다.

    sensor 명령


    드디어 본론에 들어섰다.sensor 명령은 이름과 같이 다양한 센서의 값을 읽거나 쓸 수 있습니다.help sensor에서 sensor 명령의 사용 방법을 확인할 수 있다.
    이번에는 지정된 값을 센서의 값으로 사용하기 위해 sensor set 명령을 사용합니다.sensor set 명령은 다음과 같다.
    set <sensorname> <value-a>[:<value-b>[:<value-c>]]
    
    <sensorname>에 센서 이름을 지정합니다.이것은 sensor status 명령을 통해 확인할 수 있다.
    예를 들어, 다음을 입력할 때 가속도 센서의 Y축 값을 20에 지정할 수 있습니다.
    sensor set acceleration 0:20:0
    
    아래 그림에서 보듯이 터미널을 세로로 설정할 때 가속도 센서의 정상값은 0:9.81:0이다.

    텔넷 명령 자동 실행


    이로써 Android emulator의 emulator Console를 사용하여 다양한 센서의 값을 시뮬레이션할 수 있습니다.
    그럼 이 일련의 작업을 자동화해 보세요.
    텔넷 명령을 자동으로 실행하려면 다음과 같습니다.
    $ (sleep 1; echo help; sleep 1) | telnet localhost 5554
    
    이 작업을 수행한 후 emulator Constore에 연결하고 1초 후help 명령을 실행하고 1초 후telnet이 종료됩니다.
    우선sleep 1 1초를 기다리는 것은 텔넷의 연결이 완료되기를 기다리기 위해서다.
    이렇게 하면 임의의 명령을 자동으로 실행할 수 있지만, 사전에 다른 파일로 명령을 준비하면 매우 편리하다.
    아래 내용에 따라 제작해 주십시오cmds.sh.
    cmds.sh
    a=$(cat ~/.emulator_console_auth_token)
    sleep 1
    echo auth $a
    echo sensor status
    sleep 1
    
    이걸로 텔넷을 제어하면 다음과 같이 실행됩니다.
    $ sh ./cmds.sh | telnet localhost 5554
    
    auth 명령을 자동으로 실행하고 sensor status 명령을 실행했는지 확인할 수 있을 것이다.
    나머지는 cmds.sh를 자신이 좋아하는 지령으로 바꾸는 것이다.케이스 스크립트로 제작할 수 있기 때문에 일정 시간, 조건 지점, 중복 처리를 쉽게 기다릴 수 있다.

    참고 자료

  • 간단한 Android emulator console 명령 전송 방법
  • 케이스 스크립트에서telnet 자동 조작-mozukuma의 기술적 노트
  • Send Emulator Console Commands | Android Studio
  • 좋은 웹페이지 즐겨찾기