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

使用adb和活动管理器在Android上以指定名称捕获JPEG图像,android,automation,camera,adb,Android,Automation,Camera,Adb,更新 我完全理解,所有的应用程序都是不同的,没有标准。我提出以下问题是希望了解三星相机应用程序内部知识的人能够阅读 我正在开发一个自动化工具,可以用Android智能手机拍摄图像 智能手机始终使用USB电缆连接到PC,并由adb控制 到目前为止,我已经成功启动了camera应用程序,发送它KEYCODE\u camera事件,并在默认的camera目录中提取最新的文件(/sdcard/DCIM/camera): 我不喜欢我不能关闭自动曝光和其他“魔术”,默认情况下在三星相机应用程序中启用。我也不

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

我正在开发一个自动化工具,可以用Android智能手机拍摄图像

智能手机始终使用USB电缆连接到PC,并由adb控制

到目前为止,我已经成功启动了camera应用程序,发送它
KEYCODE\u camera
事件,并在默认的camera目录中提取最新的文件(
/sdcard/DCIM/camera
):

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

我发现了另一个动作,
android.media.action.IMAGE\u CAPTURE
。当我启动intent时,摄像头应用程序不会显示任何附加控件

当我发送
KEYCODE\u照相机
事件时,它会显示捕获图像的预览和两个按钮“Repeat”和“Ok”。在我发出
KEYCODE\u ENTER
事件后,此预览将消失

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

活动管理器在没有参数的情况下运行时显示了许多命令行开关,这表明它提供了丰富的机会

是否可以使相机活动保存文件


我在Android 8.1上使用Galaxy Tab S4,摄像头应用程序版本为8.0.11.11

没有标准的
adb
选项允许您控制任意摄像头应用程序执行任意操作。同样,没有标准的
adb
操作来打印文件、启动洗碗机或发射火箭。使用
adb
am
命令所能做的就是创建一个
Intent
——该
Intent
中可能允许的细节取决于
Intent
的接收者,就像所有创建的API一样

除了摄像头应用程序的开发人员之外,没有人知道该应用程序可能有哪些未记录和不受支持的
Intent
选项。说它是一款“三星”相机应用程序只是将范围限制在三星多年来发布的几十款不同的预装相机应用程序上


当然,欢迎您查看开源摄像头应用程序的源代码,看看是否有任何选项可以让您通过
adb
实现您想要的功能。但是,不能保证随着摄像头应用程序的发展,这些应用程序会保持不变。

Android摄像头应用程序即使不是数千个,也有数百个,包括预装和用户安装。如果您不喜欢此摄像头应用程序的行为,请安装另一个。或者,使用相机库(CameraX Finally,或类似Fotoapparat或CameraKit Android的东西)编写自己的程序。然后,您自己的摄像头应用程序可以公开自己的控制面(广播将由
adb
、Web服务API等触发)。我正朝着这个方向思考。然而,如果解决方案看起来只是一个新的命令行参数,那将是一个遗憾。据我所知,没有标准。我这样问的目的是希望有人了解相机的内部结构。@wl2776:但“内部结构”将用于相机应用程序,你、我和其他任何人都不知道你在使用什么相机应用程序。我们只知道你正在三星上运行它。基于我使用过的各种三星设备,如果它们只有不到十几个单独的摄像头应用程序,我会感到震惊。即使我们知道你正试图入侵的那个摄像头应用程序,也不太可能有人会对它了解很多,并在你的问题上发布。
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