Захватите изображение JPEG на Android с указанным именем, используя adb и менеджер активности - PullRequest
0 голосов
/ 23 октября 2019

Обновление Я прекрасно понимаю, что все приложения разные, и стандарта нет. Я задаю следующий вопрос в надежде, что его прочтет кто-то, обладающий знаниями внутренних областей приложений камеры Samsung.

Я занимаюсь разработкой средства автоматизации, которое должно захватывать изображения с помощью смартфона Android.

Смартфон всегда подключен к ПК с помощью USB-кабеля и управляется 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

Мне не нравится, что я не могу отключить автоматическую экспозицию и другие "магические" функции, включенные в приложениях камеры Samsung по умолчанию. Я также не могу контролировать имя файла.

Я нашел другое действие, android.media.action.IMAGE_CAPTURE. Когда я запускаю намерение с ним, приложение камеры не показывает никаких дополнительных элементов управления.

Когда я отправляю событие KEYCODE_CAMERA, оно показывает предварительный просмотр захваченного изображения и две кнопки «Повторить» и «Ок»,Этот предварительный просмотр исчезает после того, как я запускаю событие KEYCODE_ENTER.

Однако я не вижу ни одного файла с захваченным изображением.

Диспетчер активности показывает много переключателей командной строки при запуске без параметров, чтопредположить, что это дает богатые возможности.

Можно ли заставить камеру работать, чтобы сохранить файл?

Я использую Galaxy Tab S4 с Android 8.1, версия приложения камеры 8.0.11.11

1 Ответ

0 голосов
/ 23 октября 2019

Нет стандартных adb опций, которые позволяют вам управлять произвольными приложениями камеры для выполнения произвольных действий. Точно так же не существует стандартных adb действий для печати файла, запуска посудомоечной машины или запуска ракеты. Все, что вы можете сделать с adb и командой am, это создать Intent - детали того, что может быть разрешено в этом Intent, зависят от получателя Intent, как и со всеми когда-либо созданными API.

Никто, кроме разработчиков приложения камеры, не знает, какие недокументированные и неподдерживаемые параметры Intent могут быть для этого приложения. Сказать, что это приложение для камеры Samsung, просто ограничивает область применения несколькими десятками различных предустановленных приложений для камеры, которые Samsung поставляла на протяжении многих лет.

Вы, безусловно, можете проверить исходный код, чтобы открыть исходный код. приложения камеры и посмотреть, если какие-либо предложения Intent, которые позволят вам выполнить то, что вы хотите с помощью adb. Однако нет никакой гарантии, что они останутся без изменений, так как приложение для камеры будет развиваться со временем.

...