python 으로 안 드 로 이 드 폰 제어 하 는 거 가르쳐 줄 게.
8713 단어 python핸드폰 을 제어 하 다오토 메 이 션
ADB(Android 디 버 깅 브리지)는 명령 행 도구(CLI)로 Android 장 치 를 제어 하고 통신 할 수 있 습 니 다.응용 프로그램 을 설치 하고 디 버 깅 프로그램 을 설치 하 며 숨겨 진 기능 을 찾 고 케이스 프로그램 을 사용 하여 장치 와 직접 연결 할 수 있 습 니 다.ADB 를 사용 하려 면 장치 의 잠 금 해제 개발 자 옵션 과 USB 디 버 깅 을 사용 해 야 합 니 다.개발 자 옵션 을 풀 려 면 장치 설정 으로 이동 한 다음'관련'부분 으로 내 려 가 현재 소프트웨어 의 내부 버 전 번 호 를 찾 을 수 있 습 니 다.내부 버 전 번 호 를 7 번 누 르 면 개발 자 옵션 이 사 용 됩 니 다.그리고 설정 한'개발 자 옵션'패 널 로 이동 해서 USB 디 버 깅 을 사용 할 수 있 습 니 다.지금 당신 이 해 야 할 또 다른 일 은 장 치 를 컴퓨터 의 USB 케이블 에 연결 하 는 것 입 니 다.
이것 은 오늘 의 여정 이다.
1.설치 요구 사항
2.입문
3.스 크 립 트 작성 의 기본
4.셀 카 타이머 만 들 기
5.정의 검색 기 만 들 기
2.설치 요구
우리 가 설치 해 야 할 두 가지 일 중 첫 번 째 일 은 컴퓨터 의 ADB 도구 이다.Android Studio 와 자동 으로 묶 여 있 기 때문에 이미 가지 고 있다 면 걱정 하지 마 세 요.그렇지 않 으 면[공식 문서]로 이동 할 수 있 습 니 다(https://developer.android.com/studio/command-line/adb)그리고 페이지 상단 에 어떻게 설치 하 는 지 에 대한 설명 이 있어 야 합 니 다.
ADB 도 구 를 설치 한 후 python 라 이브 러 리 를 가 져 와 야 합 니 다.저 희 는 이 라 이브 러 리 와 ADB 와 저희 장 치 를 사용 하여 인 터 페 이 스 를 진행 할 것 입 니 다.pip install Pure-python-adb 를 사용 하여 Pure-python-adb 라 이브 러 리 를 설치 할 수 있 습 니 다.
선택:스 크 립 트 를 개발 할 때 더 쉽게 하기 위해 scrcpy 라 는 오픈 소스 프로그램 을 설치 할 수 있 습 니 다.이 프로그램 은 마우스 와 키 보드 를 사용 하여 컴퓨터 에 안 드 로 이 드 장 치 를 표시 하고 제어 할 수 있 습 니 다.설치 하려 면[Github repo]로 이동 할 수 있 습 니 다(https://github.com/Genymobile/scrcpy)운영 체제(Windows,macOS 또는 Linux)에 적용 되 는 정확 한 버 전 을 다운로드 합 니 다.Windows 를 사용한다 면 zip 파일 을 디 렉 터 리 에 압축 한 다음 이 디 렉 터 리 를 경로 에 추가 합 니 다.이렇게 되면 터미널 창 에 scrcpy 를 입력 하면 시스템 의 모든 위치 에서 프로그램 에 접근 할 수 있 습 니 다.
입문
현재 모든 의존 항목 이 설치 되 어 있 습 니 다.ADB 를 시작 하고 장 치 를 연결 할 수 있 습 니 다.우선 USB 케이블 을 이용 해 장 치 를 PC 에 연결 하고 USB 디 버 깅 을 사용 하면 PC 가 장 치 를 제어 할 수 있 는 지 묻 는 메시지 가 뜨 는데 대답 만 하면 된다.그리고 PC 에서 터미널 창 을 열 고 adb start-server 를 입력 하여 ADB 서버 를 시작 합 니 다.이것 은 다음 과 같은 메 시 지 를 출력 해 야 합 니 다.
scrcpy
을 입력 하여 시작 할 수 있 습 니 다.단,이 는 경로 에 추가 할 때 만 유효 합 니 다.그렇지 않 으 면 터미널 디 렉 터 리 를 scrcpy 를 설치 한 디 렉 터 리 로 변경 하고 scrcpy.exe**를 입력 하여 실행 가능 한 파일 을 열 수 있 습 니 다.모든 것 이 순 조 롭 기 를 바 랍 니 다.PC 에서 장 치 를 볼 수 있 고 마우스 와 키 보드 를 사용 하여 제어 할 수 있 을 것 입 니 다.현재,우 리 는 새로운 python 파일 을 만 들 고,이 라 이브 러 리 로 연 결 된 장 치 를 찾 을 수 있 는 지 확인 할 수 있 습 니 다.
rom ppadb.client import Client as AdbClient
if __name__ == '__main__':
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}')
여기에서,우 리 는 AdbClient 클래스 를 가 져 와 서 클 라 이언 트 대상 을 만 듭 니 다.그리고 연 결 된 장치 의 목록 을 얻 을 수 있 습 니 다.마지막 으로,우 리 는 목록 에서 첫 번 째 장 치 를 얻 었 다.4.스 크 립 트 작성 의 기초
우리 가 장치 와 연결 하려 는 주요 방식 은 케이스 를 사용 하 는 것 이다.이런 방식 을 통 해 우 리 는 특정한 위치의 터치 나 A 에서 B 로 미 끄 러 지 는 것 을 모 의 하 는 명령 을 보 낼 수 있다.화면 터치(가볍게 치기)를 모 의 하려 면 먼저 화면 좌표 의 작업 방식 을 알 아야 한다.이러한 문 제 를 해결 하 는 데 도움 을 주기 위해 서 우 리 는 개발 자 옵션 에서 포인터 위치 설정 을 활성화 할 수 있다.활성화 후 화면 에 있 는 어디 를 만 져 도 이 점 의 좌 표 는 상단 에 표 시 됩 니 다.좌표계 의 작업 방식 은 다음 과 같다.
이 그림 은 좌표계 의 작업 방식 을 보 여 준다.
디 스 플레이 의 왼쪽 상단 은 각각*x 와 y 좌표(0,0)를 가지 고 있 으 며 오른쪽 하단 의 좌 표 는 x 와 y*의 최대 가능 치 입 니 다.
이제 우 리 는 좌표계 의 작업 원 리 를 알 게 되 었 으 니,우 리 는 실행 할 수 있 는 서로 다른 명령 을 검사 해 야 한다.나 는 빠 른 참고 로 명령 목록 과 그것 을 어떻게 사용 하 는 지 아래 에 열거 했다.
Input tap x y
Input text “hello world!”
Input keyevent eventID
Here is a list of some common eventID's:
3: home button
4: back button
5: call
6: end call
24: volume up
25: volume down
26: turn device on or off
27: open camera
64: open browser
66: enter
67: backspace
207: contacts
220: brightness down
221: brightness up
277: cut
278: copy
279: paste
더 많은 것 을 찾 으 려 면 여기 서 긴 목록 을 찾 으 십시오.https://forum.xda-developers.com/t/q-adb-input-keyevent-for-long-press-on-power- button.2063741 / post-64890206。5.셀 카 타이머 만 들 기
이제 우리 가 무엇 을 할 수 있 는 지 알 고 시작 합 시다.첫 번 째 예제 에서 빠 른 셀 카 타 이 머 를 만 드 는 방법 을 보 여 드 리 겠 습 니 다.우선,우 리 는 우리 의 라 이브 러 리 를 가 져 오고 우리 의 장치 에 연결 하기 위해 connect 함 수 를 만들어 야 합 니 다.
import time
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
connect 함수 가 장치 에 어떻게 연결 되 는 지 보 실 수 있 습 니 다.이 곳 을 제외 하고 저 희 는 장치 와 클 라 이언 트 대상 을 되 돌려 나중에 사용 할 수 있 습 니 다.
if __name__ == '__main__':
device, client = connect()
# open up camera app
device.shell('input keyevent 27')
# wait 5 seconds
time.sleep(5)
# take a photo with volume up
device.shell('input keyevent 24')
print('Taken a photo!')
주 코드 에서 장치 와 클 라 이언 트 대상 을 검색 하기 위해 connect 함 수 를 호출 할 수 있 습 니 다.그곳 에서 우 리 는 카메라 애플 리 케 이 션 을 켜 고 5 초 를 기다 리 며 사진 을 찍 을 수 있다.정말 이렇게 간단 해!내 가 전에 말 했 듯 이 이것 은 당신 이 일반적으로 할 수 있 는 일 을 복사 하 는 것 일 뿐 입 니 다.따라서 먼저 수 동 으로 조작 하고 절 차 를 쓰 면 어떻게 하 는 것 이 가장 좋 은 지 생각 하 는 것 입 니 다.6.정의 검색 기 만 들 기
이제 우 리 는 브 라 우 저 에 게 특정 단어의 정 의 를 찾 고 캡 처 를 해서 컴퓨터 에 저장 하도록 하 는 더 복잡 한 일 을 할 수 있다.
이 프로그램의 기본 절 차 는 다음 과 같다.
1.브 라 우 저 열기
2.검색 창 을 클릭
3.검색 어 입력
4.몇 초 만 기 다 려 라
5.캡 처 및 저장
단,우리 가 시작 하기 전에 기본 브 라 우 저 에서 검색 표시 줄 의 좌 표를 찾 아야 합 니 다.제 가 제안 한 방법 으로 쉽게 찾 을 수 있 습 니 다.나 에 게 그들 은(440,200)이다.
우선,우 리 는 이전 과 같은 라 이브 러 리 를 가 져 와 야 하 며,또한 같은 connect 방법 을 가 질 것 이다.
import time
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
우리 의 주요 함수 에서,우 리 는 connect 함 수 를 호출 하고,검색 표시 줄 의*x 와 y*좌표 에 변 수 를 분배 할 수 있 습 니 다.이것 은 목록 이나 원본 이 아 닌 문자열 입 니 다.그러면 우 리 는 쉽게 좌 표를 셸 명령 에 합 칠 수 있 습 니 다.사용자 에 게 서 입력 정 보 를 얻 을 수 있 습 니 다.어떤 단어의 정 의 를 얻 으 려 고 하 는 지 확인 할 수 있 습 니 다.
if __name__ == '__main__':
device, client = connect()
search_bar = '440 200' # x y
query = input('What word do you want to find the definition of: ')
search_query = f'what is the definition of {query}'
우 리 는 조 회 를 완전한 문장 에 추가 한 후에 그것 을 검색 할 것 이다.그러면 우 리 는 항상 정 의 를 얻 을 수 있다.그 후에 저 희 는 브 라 우 저 를 열 고 검색 어 를 검색 표시 줄 에 입력 할 수 있 습 니 다.다음 과 같 습 니 다.
device.shell('input keyevent 64')
time.sleep(0.25) # wait for browser to load
device.shell(f'input tap {search_bar}')
device.shell(f'input text "{search_query}"') # make sure you have the quotation marks around your text
device.shell('input keyevent 66')
time.sleep(3) # wait for results to load
검색 을 수행 하기 위해 이벤트 ID 66 아 날로 그 입력 키 를 누 릅 니 다.필요 하 다 면 필요 에 따라 대기 시간 을 변경 할 수 있다.마지막 으로 장치 대상 에서 screencap 방법 으로 화면 캡 처 를 가 져 온 다음 에*.png*파일 로 저장 할 수 있 습 니 다.
screenshot = device.screencap()
with open('result.png', 'wb') as f: # save the screenshot as result.png
f.write(screenshot)
print('Saved screenshot!')
여기에서,우 리 는 그림 을 표시 하 는 바이트 로 파일 을 열 어야 합 니 다.왜냐하면 screencap 방법 은 그림 을 표시 하 는 바이트 로 되 돌아 가기 때 문 입 니 다.모든 것 이 계획 대로 진행 된다 면 특정 단 어 를 검색 하 는 빠 른 스 크 립 트 가 있어 야 한다.이것 은 나의 휴대 전화 에서 정상적으로 일한다.
마지막 생각
오늘 새로운 지식 을 배 우 셨 으 면 좋 겠 습 니 다.제 가 이것 에 대해 연 구 를 하기 전에 저 는 개인 적 으로 이것 이 이런 일 인지 몰 랐 습 니 다.멋 진 일 은 평소에 할 수 있 는 모든 일 을 수행 할 수 있 고 더 많은 일 을 할 수 있다 는 것 입 니 다.자신의 터치 와 동작 을 모 의 하 는 것 이기 때 문 입 니 다!
이 글 을 좋아 하고 읽 어 주 셔 서 감사합니다!💖
python 으로 안 드 로 이 드 폰 을 제어 하 는 것 을 가 르 치 는 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 사항 은 python 으로 핸드폰 내용 을 제어 하 는 것 입 니 다.예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.