Operate Android using OpenCV.
Project description
android-auto-play-opencv
OpenCV の画像認識を使って、Android を自動操作するライブラリです。
Android を操作する時に Android Debug Bridge (adb) を使うので、マウスカーソルが奪われません。
NoxPlayer を操作することも出来ます。
Readme
https://noitaro.github.io/android-auto-play-opencv/
Installation
- ライブラリのインストール
pip install android-auto-play-opencv
- このライブラリを使うには、Android SDK Platform-Tools に含まれる
adb.exe
が必要です。
How to use
# This Python file uses the following encoding: utf-8
# pip install android-auto-play-opencv
import android_auto_play_opencv as am
adbpath = '..\\platform-tools\\'
def main():
aapo = am.AapoManager(adbpath)
while True:
# 画面キャプチャ
aapo.screencap()
# 早送りボタンは常にタップ
if aapo.touchImg('./umamusume/hayaokuri.png'):
# タップ出来たら待機
aapo.sleep(1)
# Google Playダイアログが出たら、キャンセルの位置をタップ
elif aapo.chkImg('./umamusume/google-play.png'):
aapo.touchPos(135, 630)
aapo.sleep(1)
if __name__ == '__main__':
main()
完成品
Reference
start
アプリを起動する。
# FGOを起動する.
aapo.start('com.aniplex.fategrandorder/jp.delightworks.Fgo.player.AndroidPlugin')
end
アプリを終了する。
# FGOを終了する.
aapo.end('com.aniplex.fategrandorder')
sleep
処理を待機させる。
# 5秒待機.
aapo.sleep(5)
screencap
Android の画面をキャプチャする。
# 画面キャプチャ
aapo.screencap()
chkImg
screencap
で取得したスクリーンショットに、テンプレート画像があるか確認します。タップはしません。
if aapo.chkImg('./template/stage_clear.png'):
# あった時の処理.
pass
chkImg2
screencap
で取得したスクリーンショットに、テンプレート画像があるか確認します。タップはしません。見つけた座標も返してくれます。
# 古龍の心臓 が見つかったら位置を戻す。
result, x, y = aapo.chkImg2('./template/koryunosinzo.png')
print('result=' + str(result) + ', x=' + str(x) + ', y=' + str(y))
if result:
# 見つかった位置から指定ピクセルズラしてロングタップ(5秒)
aapo.longTouchPos(x+50, y+50, 5000)
引数_multiをTrueにすると、複数の結果を返してくれます。
ret, poss = aapo.chkImg2('tenpure.png',_multi = True)
if ret:
for i in range(len(poss)):
pos = poss[i]
print(f'X={pos[0]}, Y={pos[1]}')
pass
pass
touchImg
screencap
で取得したスクリーンショットに、テンプレート画像があればタップします。タップ結果を返してくれます。
aapo.touchImg('./template/stage_clear.png')
touchPos
指定位置をタップします。
# X=750、Y=400 の位置をタップする.
aapo.touchPos(750, 400)
第3引数を指定すると、ロングタップします。
# X=750、Y=400 の位置を5秒間タップする.
aapo.longTouchPos(750, 400, 5000)
swipeTouchPos
指定位置をスワイプします。
# X=750、Y=800 から、X=750、Y=400 まで、1秒かけてスワイプする.
aapo.swipeTouchPos(750, 800, 750, 400, 1000)
inputtext
文字を入力します。
# abc を入力する.
aapo.inputtext('abc')
inputkeyevent
HOMEキーやバックキーを送ります。
# ホームキーを押す.
aapo.inputkeyevent(3)
# バックキーを押す.
aapo.inputkeyevent(4)
inputkeyevent
screencap
で取得したスクリーンショットを保存します。
# キャプチャ画像を保存
aapo.imgSave('screenshot.png')
# 現在の日時でキャプチャ画像を保存
aapo.imgSave('img/screenshot_' + datetime.datetime.now().strftime('%Y%m%d%H%M%S') + '.png')
# ↑をする場合「import datetime」をファイルの先頭に書くこと。
デバイス選択
複数の端末で同時実行できます。
import inquirer # pip install inquirer
aapo = am.AapoManager('C:\\Program Files\\Nox\\bin\\')
devicesselect = [
inquirer.List(
"device",
message="デバイスを選択して下さい。",
choices=aapo.adbl.devices
)
]
selected = inquirer.prompt(devicesselect)
aapo.adbl.setdevice(selected['device'])
aapo.screencap()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file android_auto_play_opencv-1.0.9-py3-none-any.whl
.
File metadata
- Download URL: android_auto_play_opencv-1.0.9-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fc9717abfaa64ed5ed7f316cc4f46765402ecc3e66cf5aaa660ee2c5f28de2b |
|
MD5 | dc7eacb9462d0773dd5ce4184bc90b7f |
|
BLAKE2b-256 | b3b6dc4f17ceec98a64678920e49229727d34d4ee9f0c5b2a58601584c2e765c |