7

我的目标是使用前置和后置摄像头自动捕获和保存图片的过程。

我使用的是运行 Android 版本 4.4.2 的 Nexus 5,但我还没有植根它。

我使用以下命令分别打开前置和后置摄像头:

>adb shell am start -a android.media.action.IMAGE_CAPTURE --ei android.intent.extras.CAMERA_FACING 1


>adb shell am start -a android.media.action.IMAGE_CAPTURE --ei android.intent.extras.CAMERA_FACING 0

(我在以前的stackoverflow post-> ADB命令中找到了这些命令来切换android设备中的相机模式

问题是,当设备处于这两种模式中的任何一种时,当我执行此命令时,它只会捕获而不保存图像:

>adb shell input keyevent KEYCODE_CAMERA

运行此命令后,屏幕上会出现照片以及保存、丢弃或重新拍摄照片的按钮。但是,保存选项似乎没有做任何事情。

我有两个具体问题:

1.) 是否有任何替代命令可用于打开任一相机?

2.) 如何确保图像没有保存在某个意外位置?

我真的很感激这个问题的一些帮助。

编辑:我不需要将图片存储在我的电脑上,我希望它在 /sd/card/DCIM/Camera 或手机上的其他地方。

4

1 回答 1

1

我在 2020 年在我正在回收的“旧”设备(android KitKat 4.4)上面临同样的问题,这个问题首先出现在 Google 上。

所以看起来至少有两种方法可以调用相机应用程序(回到 android 4.4):(IMAGE_CAPTURE你叫什么)和STILL_IMAGE_CAMERA.

第一个在发送后要求确认adb shell input keyevent KEYCODE_CAMERA,我找不到发送验证拍摄的密钥。因此照片不会被保存。

后者不要求确认,直接保存图片。因此,作为结论,这里是我输入的所有在我的KitKat手机上拍照的行(替换 :IMAGE_CAPTURESTILL_IMAGE_CAMERA)。

adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA"
adb shell "input keyevent KEYCODE_FOCUS"
adb shell "input keyevent KEYCODE_CAMERA" #actually takes photo and saves it

以及相应的单线:

adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA" && sleep 1 &&  adb shell "input keyevent KEYCODE_FOCUS" && sleep 1 &&  adb shell "input keyevent KEYCODE_CAMERA"

如果它仍然不适合您,请继续阅读:

事实上,我忽略了 Pragy Agarwal 的评论,因为它首先不起作用。它没有工作,因为手机屏幕关闭了。所以必须先按下电源键才能打开屏幕(但如果它已经按照此处的建议打开,则不要按下它):

adb shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb shell "input keyevent KEYCODE_POWER"

如果对我来说它仍然无法工作,因为相机应用程序以某种方式显示最后一张拍摄的照片,你必须在进入相机应用程序时首先按下后退按钮:

adb shell input keyevent KEYCODE_BACK

所以总而言之

adb shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb shell "input keyevent KEYCODE_POWER" # switch the screen on

adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA"

adb shell input keyevent KEYCODE_BACK # go back to the "real time" camera not the gallery

adb shell "input keyevent KEYCODE_FOCUS"
adb shell "input keyevent KEYCODE_CAMERA" # shoots the picture and saves it

变成:

adb shell "dumpsys power" | grep "mScreenOn=true" | xargs -0 test -z && adb shell "input keyevent KEYCODE_POWER" && sleep 1 && adb shell "am start -a android.media.action.STILL_IMAGE_CAMERA" && sleep 1 && adb shell "input keyevent KEYCODE_BACK" && sleep 1 &&   adb shell "input keyevent KEYCODE_FOCUS" && sleep 1 &&  adb shell "input keyevent KEYCODE_CAMERA"

对于一个 7 岁以上的设备来说,这是一个多么长的答案,但仍然以某种方式完成它的工作!

于 2020-05-16T06:13:22.310 回答