python+adb的零碎记录

相机

不存在 "触发拍照行为" 的通用系统 Action,只能通过 "打开相机 + 模拟操作" 实现自动化拍照。

1、打开相机

-a android.media.action.IMAGE_CAPTURE,通用动作

-n 包名/activity名

2、快速实现用ADB 模拟点击(坐标),适配多设备用uiautomator2(控件识别);

python 复制代码
from ppadb.client import Client as AdbClient
import uiautomator2 as u2
import time

def adb_connect():
    adb_client = AdbClient(host="127.0.0.1", port=5037)
    
    try:
        devices = adb_client.devices()
    except Exception as e:
        raise Exception(f"ADB连接失败:{str(e)},请检查ADB服务是否启动")
    if not devices:
        raise Exception("未检测到安卓设备,请检查:\n1. USB连接是否正常\n2. 开发者模式/USB调试是否开启\n3. 设备是否授权此电脑")
    
    return adb_client, devices[0]

def open_camera(device):
    device.shell(f"am start -n org.codeaurora.snapcam/com.android.camera.CameraLauncher")
    print('打开相机')
    time.sleep(3)

# 方法1:拍照按钮坐标
def position(device):
    tap_x,tap_y=542,2320
    device.shell(f'input tap {tap_x} {tap_y}')
    time.sleep(3)
    print('通过坐标拍照')
    
# 方法2:拍照按钮控件
def resource():
    d=u2.connect()
    try:
        d(resourceId="org.codeaurora.snapcam:id/shutter_button").click()
    except Exception as e:
        raise Exception('未找到指定id的按钮,无法拍照')
    time.sleep(3)
    print('通过控件拍照')
    
adb_client, device=adb_connect()
open_camera(device)
position(device)
resource()
相关推荐
Anastasiozzzz8 分钟前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步12 分钟前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
alvin_200518 分钟前
python之OpenGL应用(二)Hello Triangle
python·opengl
机器视觉的发动机23 分钟前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
铁蛋AI编程实战27 分钟前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
HyperAI超神经31 分钟前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
jiang_changsheng39 分钟前
RTX 2080 Ti魔改22GB显卡的最优解ComfyUI教程
python·comfyui
R_.L41 分钟前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
Zach_yuan1 小时前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
云姜.1 小时前
java多态
java·开发语言·c++