相机
不存在 "触发拍照行为" 的通用系统 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()