使用 adb 和 activity 管理器以指定名称在 Android 上捕获 JPEG 图像

Capture JPEG image on Android with specified name using adb and activity manager

更新 我完全理解,所有的应用程序都是不同的,没有标准。我提出以下问题,希望了解三星相机应用程序内部知识的人能够阅读它。

我正在开发一个自动化工具,应该使用 Android 智能手机捕获图像。

智能手机始终使用 USB 数据线连接到 PC,并由 adb 控制。

到目前为止,我已经成功启动相机应用程序,向其发送 KEYCODE_CAMERA 事件并在默认相机目录 (/sdcard/DCIM/Camera) 中提取最新文件:

adb am start -a android.media.action.STILL_IMAGE_CAMERA -n com.sec.android.app.camera/.Camera       # launch camera app.
adb shell input keyevent KEYCODE_CAMERA   # take a picture
adb shell ls -t /sdcard/DCIM/Camera | head -1   # determine name of newly created file

我不喜欢我无法关闭自动曝光和其他 "magic",默认情况下在三星相机应用程序中启用。我也无法控制文件名。

我找到了另一个动作,android.media.action.IMAGE_CAPTURE。当我使用它启动 Intent 时,相机应用程序不显示任何其他控件。

当我发送 KEYCODE_CAMERA 事件时,它会显示捕获图像的预览以及两个按钮 "Repeat" 和 "Ok"。此预览在我发出 KEYCODE_ENTER 事件后消失。

但是,我没有看到任何带有捕获图像的文件。

Activity 管理器在 运行 不带参数时显示大量命令行开关,这表明它提供了丰富的机会。

是否可以让相机activity保存文件?

我正在使用 Android 8.1 的 Galaxy Tab S4,相机应用程序版本是 8.0.11.11

没有标准 adb 选项可让您控制任意相机应用程序执行任意操作。同样,没有标准的 adb 操作来打印文件、启动洗碗机或发射火箭。您可以使用 adbam 命令做的就是制作一个 IntentIntent 中可能允许的内容的详细信息取决于 [= 的接收者14=],与以往创建的所有 API 一样。

除了相机应用程序的开发者之外,没有人知道该应用程序可能有哪些未记录和不受支持的 Intent 选项。说它是一个 "Samsung" 相机应用程序只是将范围限制在三星多年来出货的几十种不同的预装相机应用程序。

当然欢迎您检查开源相机应用程序的源代码,看看是否有任何 Intent 选项可以让您通过 adb 完成您想要的事情。但是,随着相机应用程序的不断发展,无法保证这些会保持不变。