Python控制手机,五排上分

        当你想抢王者聊天频道的皮肤碎片红包,或者想和小姐姐(小哥哥)开游戏的时候。可以使用python自动化工具,进行自动化加入开黑房间(一般小姐姐开黑会开语音,然后就会有大佬带,然后就容易上分,哈哈哈)。然后可以喝个奶茶,看个电影~一边等待,加入上分的队伍(所需工具下载链接详见文章尾部)

        B站视频传送门:攻城狮晚的个人空间_哔哩哔哩_Bilibili

        如何快速和小姐姐五排开黑~_哔哩哔哩_bilibili

       

目录

1、下载安装ADB工具包和驱动

2、下载安装Andriod SDK

3、UiAutoMatorViewer下载安装

4、测试

5、最终具体Python代码实现

6、参考文献


1、下载安装ADB工具包和驱动

 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具

Python控制手机,五排上分_第1张图片

下载工具包后,解压到英文路径后,添加系统环境变量

Python控制手机,五排上分_第2张图片

下载驱动之后,点击安装驱动

Python控制手机,五排上分_第3张图片

2、下载安装Andriod SDK

AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
Python控制手机,五排上分_第4张图片

我是win10系统,所以下载了这个

Python控制手机,五排上分_第5张图片

下载装好之后,会自动运行 SDK Manager。如果没有的话,开始菜单或者安装目录找一下,运行就好。

Python控制手机,五排上分_第6张图片

 Python控制手机,五排上分_第7张图片

Python控制手机,五排上分_第8张图片

测试了一下安装还挺快的,我安装的是这几个

3、UiAutoMatorViewer下载安装

1、下载jdk1.8安装(据说其他版本使用UiAutoMatorViewer有问题):

可以先查看jdk(Java Development Kit——Java开发工具包)版本。开始菜单输入cmd,打开命令行窗口,输入java -version查看:

如果没有jdk的话,可以从如下网址下载安装

https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html

2、下载UiAutoMatorViewer

https://dfenghuoyunji.jb51.net/201904/tools/uiautomatorviewer.rar

下载后,将里面的uiautomatorviewer.jar文件复制到之前安装的sdk的 tools/lib目录下

Python控制手机,五排上分_第9张图片

如果不放心的话,可以将之前的uiautomatorviewer.jar 备份一下

Sdk目录下的tools目录中,uiautomatorviewer.bat可以备份下,然后最后一行Dcom.android.uiautomator.bindir=后接adb实际存放路径。

Python控制手机,五排上分_第10张图片

我放在了D:\program files\Android\abd下

Python控制手机,五排上分_第11张图片

此时即可双击运行uiautomatorviewer.bat,打开uiautomatorviewer

Python控制手机,五排上分_第12张图片

 Python控制手机,五排上分_第13张图片

4、测试

1、使用获取截图png和uix文件,保存到当前文件夹:

adb shell screencap -p /sdcard/sc.png

adb pull /sdcard/sc.png

adb shell uiautomator dump /sdcard/sc.uix

adb pull /sdcard/sc.uix

2、使用uiautomatorviewer工具查看能否解析成功

经过测试,手机桌面是可以解析的

Python控制手机,五排上分_第14张图片

但是王者游戏界面无法解析

Python控制手机,五排上分_第15张图片

Python控制手机,五排上分_第16张图片

所以准备使用百度文字识别api,进行操作,大致思路如下:

可以免费领取百度文字识别api的额度,如下网址:

https://cloud.baidu.com/doc/OCR/s/9k3h7xuv6#通用文字识别(高精度含位置版)

Python控制手机,五排上分_第17张图片

Python控制手机,五排上分_第18张图片

如果没有申请的话,默认是收费的,含位置信息的,最便宜的大概0.01元/次调用

里面有相应的调用方式参考代码示例

Python控制手机,五排上分_第19张图片

         

Token的话,可以参考这个文档,需要先创建应用

https://ai.baidu.com/ai-doc/REFERENCE/Bkru0l60m

        作者还试用了iOCR通用版,就是你可以选择需要识别的位置,指定参考点。但是经过测试,无法满足需求。

Adb调试,使用的是华为的鸿蒙手机(百度了一下,鸿蒙系统居然不是安卓了,不过应该是为了通用,adb工具还是可以进行调试的)。

连接手机后,电脑端会跳出华为手机助手,验证过后。Cmd中使用adb截图。如果截图不了的话,华为手机助手会提示再次验证。验证通过后,即可使用adb命令

Cmd中截图,查看没问题后,使用python脚本进行测试。其中点击屏幕命令如下:

adb shell input tap 522 1120(x y)


5、最终具体Python代码实现

import os
import time
import base64
import shutil
import requests
from PIL import Image


def Myexec(Tstr):
    # 自定义执行命令函数,方便调试
    os.system(Tstr)



# client_id 为官网获取的AppKey, client_secret 为官网获取的SecretKey
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【你的AppKey】&client_secret=【你的SecretKey】'
response = requests.get(host)
if response:
    response = response.json()
    token = response["access_token"]
    print(response)
    print(token)
# 可以将token保存为文件,需要的时候再取出来,这里不保存也能用,所以先不保存。
# 默认过期时间30天["expires_in"]


# 网络图片文字识别(含位置版)0.03一次,无折扣。能否检测,暂未尝试
# 通用文字识别(高精度版)0.03一次,多了有折扣
# request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic" # 可以检测出♀

# 通用文字识别(高精度含位置版)0.04一次,多了有折扣
# request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate" # 可以检测出♀

# 通用文字识别(标准版含位置)0.01一次,多了有折扣
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general" # 可以检测出♀
# 通用文字识别,不含位置的0.005一次,多了有折扣。总结了一下,还是需要位置比较好,不包含位置的,不方便点击。


spic = 'sc.png'
dpic = "tmp.png"

abd1 = 'adb shell screencap -p /sdcard/'+spic
abd2 = 'adb pull /sdcard/'+spic
# adb shell screencap -p /sdcard/sc.png
# adb pull /sdcard/sc.png

testCount = 100 # 多少次循环没有找到合适的队伍及停止
testN = 0 # 当前截屏识别次数
clickOk = 0 # 进入队伍的标志

while testN70 and exY<90 and exX>110 and exX<128: # 如果满足条件,则点击,进入房间。
                        # 不同手机分辨率下,有可能不一样。这个需要具体测试 (我的是2340*1080px)
                        print("点击位置,x:%s,y:%s"%(thisPww,thisPhw))
                        # adb shell input tap 540 1104
                        Myexec("adb shell input tap "+str(thisPww)+" "+str(thisPhw))
                        break
            if "全队" in tWords or "召集" in tWords: # 判断是否已经进入房间
                clickOk = 1 
                print("进入房间成功")

    if clickOk == 1:
        # 如果已经进入房间,退出循环
        break

经过测试,一般等待几分钟,就会进入想要的房间啦~再也不用一直盯着屏幕啦~其实还有很多功能,比如自动抢皮肤碎片啦、做任务啦,这些就需要大家自己去实现啦~

所用工具下载地址:链接:https://pan.baidu.com/s/1ckE8mj_eWhVatAFoV8E3Mg 
提取码:lkkz


6、参考文献

  1. 《ADB 操作命令详解及用法大全》ADB 操作命令详解及用法大全 - 掘金
  2. 《Android自动化测试应用<一>《uiautomatorviewer工具的安装与使用》》https://www.cnblogs.com/corsacsherry/p/10609339.html
  3. 《Android SDK的下载与安装》https://www.cnblogs.com/nebie/p/9145627.html
  4. 《OSError: cannot write mode RGBA as JPEG》https://blog.csdn.net/weixin_39777626/article/details/82774270
  5. 《Python读取图片尺寸、图片格式》https://www.cnblogs.com/d0main/p/7613296.html
  6. 《Python实现图片裁剪的两种方式(Pillow和OpenCV)》https://www.jb51.net/article/173183.htm
  7. 《Uiautomatorviewer报错Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetE》https://blog.csdn.net/qq_41714308/article/details/113886433
  8. 《UI Automator Viewer工具的使用》https://www.cnblogs.com/lhx0827/p/9577575.html
  9. 《用Python实现自动化操作Android手机》https://www.cnblogs.com/xakzp/articles/9662770.html
  10. 《python 控制手机滑屏_如何使用python控制手机(以微信游戏跳一跳为例)》https://blog.csdn.net/weixin_26757939/article/details/113642335
  11. 《android adb 模拟点击、滑动、输入、按键》https://blog.csdn.net/liukang325/article/details/79268173

你可能感兴趣的:(python,python,android,开发语言)