본문 바로가기
Engineering/Python

[python] pure-python-adb를 이용한 스마트폰 제어

by SPICA910 2022. 4. 29.
반응형

우선 스마트폰과의 연결을 하기 위해 adb(android device bridge)를 설치합니다. 

 

SDK 플랫폼 도구 출시 노트  |  Android 개발자  |  Android Developers

Android SDK 플랫폼 도구는 Android SDK의 구성요소입니다.

developer.android.com

위의 링크로 진입하여 "Windows용 SDK 플랫폼 도구 다운로드"를 눌러 다운 받습니다. 

C:>에 adb 폴더를 만들고 다운 받은 파일의 압축을 풀어줍니다. 

 

이제는 VSCode로 진입하여 Terminal창에서 

python에서 adb와 연결을 지원하는 library인 pure-python-adb를 설치 합니다. 

pip install pure-python-adb

 

스마트폰을 PC와 연결하고 adb를 통해 server로 동작 시키겠습니다. 

adb start-server

정상적으로 실행이 되었습니다. 

이젠 adb가 연결된 장치를 찾아서 연결이 되면 디바이스 번호를 불러보겠습니다. 

import time
# pure-python-adb loading
from ppadb.client import Client as AdbClient

def connect():
    client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037
    devices = client.devices()

    if len(devices) == 0:
        print('No devices')
        quit()

    device = devices[0]
    print(f'Connected to {device}')
    return device, client

실행하면 아래와 같이 결과가 나오게 됩니다. 

 

 

-----------------------------------------------------------------------------------------------------------------------------

위의 코드를 처음 실행할때 ppadb.client 모듈이 인식되지 않는다는 문제가 나오는 경우가 있습니다. 

이때 조치해야할 것은 아래 2가지 입니다. 

1. pip를 최신으로 업데이트 하기(패키지 이름에 노란색 밑줄이 쳐지는 경우)

 

2. Visual Studio Code의 경우 인터프리터를 Python으로 변경해야 합니다. 

 저의 경우에는 아래와 같이 왼쪽하단에 인터프리터가 잘못 설정되어 있었습니다. 

[Ctrl]+[Alt]+[P]를 눌러 select interpreter를 입력하면 설치되어 있는 Python을 선택할수 있습니다. 

----------------------------------------------------------------------------------------------------------

Ex) adb를 이용하여 많이 쓰이는 키 모음

3: 홈 버튼
4: 뒤로 버튼
5: 전화
6: 통화 종료
24: 볼륨 업
25: 볼륨 다운
26: 장치 켜기 또는 끄기
27: 오픈 카메라
64: 브라우저 열기
66: 입력
67: 백스페이스
207: 연락처
220: 밝기 감소
221: 밝기 업
277 : 컷
278: 복사
279: 붙여넣기

더 많은 키정보

 

[Q] ADB input keyevent ??? - For Long press on power button ?

hi guys, Please help me What's the adb command for the input keyevent for long press of Power button I know '26' is for power button But i need for long press which generally brings up the power off menu where one can turn on - Airplane...

forum.xda-developers.com

 

pure-python-adb를 통해 제어가 가능해지면 스마트폰 미러링을 통해 스마트폰을 자유롭게 제어가 가능합니다. 

https://spica910.tistory.com/143

 

[python] 스마트폰 미러링 - scrcpy

SCRCPY라는 프로그램을 이용해서 스마트폰을 미러링 하고 Python을 통해 제어하고자 합니다. GitHub - Genymobile/scrcpy: Display and control your Android device Display and control your Android device. Co..

spica910.tistory.com

 

저의 경우에는 scrcpy를 통해 화면을 모니터에 띄우고 파이썬으로 제어를 합니다. 

 

다양한 용도로 사용 가능하니 즐거운 파이썬 생활하세요!

반응형

댓글