Android 실제 시스템을 재부팅하고 잠금을 해제하기 전에 자동으로 수행됩니다.

6116 단어 Android
기본조작여기 큐타 기사.은 그렇지만, 제조공장에서 만든 실기를 조작하려면 일반적인 방법으로는 할 수 없는 일이 있기 때문에 필기를 대신한다.
사용한 실기는 여기에 있다.

  • SO-02E
  • 개발자 옵션에서 비휴면 상태로 설정됨
  • 경로 코드 잠금 등이 적용되지 않음
  • USB에 연결된 부모기 셸 조작의 전제 조건입니다.

    장치 재부팅 후 화면 잠금 해제


    먼저 재부팅

    $ adb reboot
    
    이것은 원피스로 매우 간단하다.

    재부팅 완료 대기 중

    adbwait-for-device(장치가 작동할 때까지 기다렸다가 매개 변수 조작을 실행)를 사용하면 해결할 수 없습니다.
    전원이 연결되는 순간 다음 동작이 시작되었다.
    adb를 사용하여 화면을 잠글 때까지 기다립니다. 비교적 간단한 방법을 찾지 못하기 때문에 여기에 사용합니다sleep.
    리부트 지시를 하고 1분 후에 시동을 걸면 끝나는 것 같아서 신중을 기하기 위해 2분간 여기서 기다릴게요.
    $ sleep 2m
    

    잠금 해제


    SO-02E의 록 화면은 바로 이런 느낌입니다.

    이번에는 비밀번호 자물쇠를 설정하지 않았기 때문에 중앙 하부의 잠금 해제 버튼을 만지면 잠금 해제가 가능하다.
    무슨 키보드로 풀 수 있을지 모르겠어요.
    adb screen unlock 이런 걸로 푸념을 해요. 해제 방법의 후보를 많이 찾을 수 있지만, 대부분 AVD(시뮬레이터)를 대상으로 한다.
    이번 작업 대상 SO-02Eadb shell input keyevent 82는 종료해도 아무 일도 일어나지 않습니다.
    나는 몇 가지 버튼 코드를 보냈지만 반응이 없었다.
    어쩔 수 없이 화면 잠금 해제 버튼을 눌러 잠금 해제를 시도했다.

    잠금 해제 버튼의 좌표 찾기

    shell getevent를 사용하면 터미널 장치 파일의 변화를 볼 수 있습니다.
    또한 -i 디바이스 파일의 개요를 옵션으로 표시할 수 있습니다.
    먼저 이 옵션을 사용하여 터치 센서의 장치 파일을 찾습니다.
    SO-02E의 경우/dev/input/event1는 화면의 터치 센서에 대응하는 장치 파일입니다.
    $ adb shell getevent -i /dev/input/event1
    add device 1: /dev/input/event1
      bus:      0018
      vendor    0001
      product   0001
      version   0001
      name:     "clearpad"
      location: ""
      id:       ""
      version:  1.0.1
      events:
        ABS (0003): 002f  : value 0, min 0, max 9, fuzz 0, flat 0, resolution 0
                    0030  : value 0, min 0, max 16, fuzz 0, flat 0, resolution 0
                    0031  : value 0, min 0, max 16, fuzz 0, flat 0, resolution 0
                    0034  : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    0035  : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0
                    0036  : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0
                    0039  : value 0, min 0, max 65535, fuzz 0, flat 0, resolution 0
                    003a  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
      input props:
        <none>
    
    이번-l 행사 명칭과 함께 옵션에서 어떤 사건이 발생했는지 관찰한다.
    $ adb shell getevent -l /dev/input/event1
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_TRACKING_ID   00000000
    EV_ABS       ABS_MT_POSITION_X    000002f4
    EV_ABS       ABS_MT_POSITION_Y    0000043d
    EV_ABS       ABS_MT_PRESSURE      0000004e
    EV_ABS       ABS_MT_TOUCH_MAJOR   00000005
    EV_ABS       ABS_MT_TOUCH_MINOR   00000004
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_Y    0000043b
    EV_ABS       ABS_MT_PRESSURE      00000050
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_Y    00000439
    EV_ABS       ABS_MT_PRESSURE      00000051
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000002f3
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000002f1
    EV_ABS       ABS_MT_POSITION_Y    0000043a
    EV_ABS       ABS_MT_PRESSURE      00000050
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000002eb
    EV_ABS       ABS_MT_POSITION_Y    0000043c
    EV_ABS       ABS_MT_PRESSURE      00000052
    EV_ABS       ABS_MT_TOUCH_MINOR   00000003
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000002dd
    EV_ABS       ABS_MT_POSITION_Y    0000043f
    EV_ABS       ABS_MT_PRESSURE      00000053
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000002ca
    EV_ABS       ABS_MT_PRESSURE      00000052
    EV_ABS       ABS_MT_TOUCH_MINOR   00000004
    EV_SYN       SYN_REPORT           00000000
    (以下略)
    
    ABS_MT_POSITION_X 손가락이 닿는 곳의 화면 X 좌표인 것 같은데ABS_MT_POSITION_Y 역시 Y 좌표다.
    잠금 화면에서 잠금 해제 버튼을 클릭하여 버튼의 좌표를 찾습니다.
    $ adb shell getevent -l /dev/input/event1
    EV_ABS       ABS_MT_TRACKING_ID   00000001
    EV_ABS       ABS_MT_POSITION_X    000001ef
    EV_ABS       ABS_MT_POSITION_Y    000005fb
    EV_ABS       ABS_MT_PRESSURE      00000051
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000001ed
    EV_ABS       ABS_MT_POSITION_Y    000005f9
    EV_ABS       ABS_MT_PRESSURE      00000057
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_Y    000005f7
    EV_ABS       ABS_MT_PRESSURE      00000058
    EV_ABS       ABS_MT_TOUCH_MINOR   00000005
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_Y    000005f5
    EV_ABS       ABS_MT_PRESSURE      00000057
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    000001ef
    EV_ABS       ABS_MT_PRESSURE      0000004d
    EV_ABS       ABS_MT_TOUCH_MINOR   00000003
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_TRACKING_ID   ffffffff
    EV_SYN       SYN_REPORT           00000000
    
    클릭만 해도 손가락이 흔들리는 것처럼 좌표가 업데이트되는 움직임이 많다.
    요컨대 X와 Y의 최신 값을 찾으면 다음은 잠금 해제 버튼을 만질 때의 좌표인 것 같다.
  • ABS_MT_POSITION_X 000001ef
  • ABS_MT_POSITION_Y 000005f5
  • 16진수니까 10진수로 바꾸면(495, 1525)좌표를 알면 shell input touchscreen tap 명령으로 좌표를 보내면 된다.
    잠긴 화면으로 명령을 보냅니다.
    $ adb shell input touchscreen tap 495 1525
    
    잠금 해제 성공!

    총결산


    신중을 기하기 위해 설비 조작을 기다리는 동안 마지막으로 다시 시작할 때부터 잠금을 풀 때까지 기다린다.
    $ adb wait-for-device reboot && sleep 2m && adb wait-for-device shell input touchscreen tap 495 1525
    
    간혹 메모리 부족 상태에 빠져 테스트가 정상적으로 작동하지 못하게 되면 해소할 수 있다.

    좋은 웹페이지 즐겨찾기