Skip to main content

Operate Android using OpenCV.

Project description

android-auto-play-opencv

OpenCV の画像認識を使って、Android を自動操作するライブラリです。

Android を操作する時に Android Debug Bridge (adb) を使うので、マウスカーソルが奪われません。

NoxPlayer を操作することも出来ます。

Readme

https://noitalog.tokyo/android-auto-play-opencv/

Installation

  • ライブラリのインストール

pip install android-auto-play-opencv

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)

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

android_auto_play_opencv-1.0.8-py3-none-any.whl (8.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page