教你⽤python控制安卓⼿机
⽬录
⼀、介绍
⼆、安装要求
三、⼊门
四、编写脚本的基础
五、创建⾃拍计时器
六、创建定义搜索器
七、最后的想法
⼀、介绍
ADB(Android调试桥)是⼀个命令⾏⼯具(CLI),可⽤于控制Android设备并与之通信。您可以执⾏许
多操作,例如安装应⽤程序,调试应⽤程序,查隐藏的功能并使⽤外壳程序直接与设备连接。要启⽤ADB,您的设备必须⾸先解锁开发者选项并启⽤USB调试。要解锁开发⼈员选项,您可以转到设备设置,然后向下滚动到“关于”部分,到设备上当前软件的内部版本号。单击内部版本号 7次,将启⽤开发⼈员选项。然后,您可以转到设置中的“开发⼈员选项”⾯板,然后从那⾥启⽤USB调试。现在,您唯⼀需要做的另⼀件事就是将设备连接到计算机的USB电缆。
这是今天的旅程:
1.安装要求
2.⼊门
3.编写脚本的基础
4.创建⾃拍计时器创
5.建定义搜索器
⼆、安装要求
安装ADB⼯具后,您需要获取python库,我们将使⽤该库与ADB和我们的设备进⾏接⼝。您可以使⽤pip install pure-python-adb安装pure-python-adb库。
三、⼊门
现在已经安装了所有依赖项,我们可以启动ADB并连接设备。⾸先,使⽤USB电缆将设备连接到PC,如果启⽤了USB调试,则会弹出⼀条消息,询问PC是否可以控制设备,只需回答是。然后在您的PC上,打开⼀个终端窗⼝,并通过键⼊adb start-server来启动ADB服务器。这应该打印出以下消息:
daemon not running; starting now at tcp:5037
daemon started successfully
如果您还安装了scrcpy,则可以通过在终端中键⼊**scrcpy来启动它。但是,这仅在将其添加到路径时才有效,否则可以通过将终端⽬录更改为安装scrcpy的⽬录并键⼊**来打开可执⾏⽂件。希望⼀切顺利,您应该能够在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类并使⽤它创建⼀个客户端对象。然后,我们可以获得连接的设备的列表。最后,我们从列表中获得第⼀台设备(如果仅连接了⼀个设备,则通常是唯⼀的设备)。
四、编写脚本的基础
我们要与设备连接的主要⽅式是使⽤外壳,通过这种⽅式,我们可以发送命令以模拟特定位置的触摸或从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
五、创建⾃拍计时器
现在我们知道我们能做什么,让我们开始吧。在第⼀个⽰例中,我将向您展⽰如何创建⼀个快速的⾃拍计时器。⾸先,我们需要导⼊我们的库并创建⼀个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秒钟并拍照。真的就是这么简单!正如我之前说过的,这只是复制您通常会做的事情,因此,如果您⾸先⼿动进⾏操作并写下步骤,则思考如何做事情是最好的。
六、创建定义搜索器
现在,我们可以做⼀些更复杂的事情,那就是要求浏览器到特定单词的定义,并截图以将其保存在我们的计算机上。
该程序的基本流程如下:
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 *坐标分配⼀个变量。注意这是⼀个字符串,⽽不是列表或元组,这样我们可以轻松地将坐标合并到我们的shell命令中。我们还可以从⽤户那⾥获取输⼊信息,以查看他们想要获取哪个单词的定义:
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
在这⾥,我们使⽤eventID 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控制⼿机内容请搜索
以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论