更新我完全理解,所有应用程序都是不同的,并且没有标准。我在问以下问题,希望拥有三星相机应用程序内部知识的人可以阅读。
我正在开发一个自动化工具,该工具应该使用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
我不喜欢无法关闭自动曝光和其他在三星相机应用程序中默认启用的“魔术”功能。我也无法控制文件名。
我发现了另一个动作android.media.action.IMAGE_CAPTURE
。当我使用它启动Intent时,相机应用程序不会显示任何其他控件。
当我发送KEYCODE_CAMERA
事件时,它显示捕获的图像的预览以及两个按钮“重复”和“确定”。发布KEYCODE_ENTER
事件后,此预览消失。
但是,我看不到任何带有捕获图像的文件。
活动管理器在没有参数的情况下运行时会显示很多命令行开关,这表明它提供了很多机会。
是否可以使相机活动来保存文件?
没有标准的adb
选项可让您控制任意相机应用程序执行任意操作。同样,也没有标准的adb
操作来打印文件,启动洗碗机或发射火箭。使用adb
和am
命令所能做的就是制作Intent
-与以前创建的所有API一样,Intent
可能允许的内容取决于Intent
的接收者。
[除了照相机应用程序的开发人员以外,没有人知道该应用程序可能有哪些未记录且不受支持的Intent
选项。说它是“三星”相机应用程序,仅将范围限制为三星多年来已交付的几十种预装相机应用程序。
当然,我们欢迎您检查源代码以开放原始码的相机应用程序,并查看是否有Intent
选项可让您通过adb
完成所需的操作。但是,不能保证随着相机应用程序的不断发展,这些设置将保持不变。