Можно ли вызвать функцию скриншота ICS из ADB? - PullRequest
0 голосов
/ 01 марта 2012

Мне нужно было бы иметь возможность снимать дампы экрана для тестирования, и теперь в ICS есть функция снимка экрана, которая может быть вызвана нажатием (и удержанием) громкости вниз и кнопки питания. Есть ли способ написать эту функцию через adb? (Насколько я понимаю, для этого нет общедоступного Java-API). Я пытался использовать KeyEvent из Java для эмуляции кнопки питания и громкости, и я пытался использовать adb keyevent и adb sendevent без успеха. Я подозреваю, что кнопка питания также генерирует некоторые низкоуровневые вызовы, которые не генерируются вышеуказанными методами.

Так кто-нибудь знает, можно ли вызвать функцию из adb? Если это невозможно, кто-нибудь знает, где в исходном коде существует эта функция снимка экрана? Может быть, я смогу что-нибудь понять, прочитав это.

обновление

Исходный код для захвата экрана находится в «frameworks / base / services / surfaceflinger / services / surfaceflinger / SurfaceFlinger.cpp» в функции под названием screenCapture. Я не знаю, можно ли позвонить из jni, но я постараюсь, потому что было бы здорово, если бы я мог сделать снимок экрана через Java.

В противном случае у @edthethird было решение для android.amberfog.com/?p=168, которое позволит сделать снимок экрана с помощью командной строки.

Спасибо за помощь всем!

Ответы [ 4 ]

10 голосов
/ 17 мая 2012

В виде команд adb на устройствах ICS работают следующие функции:

adb shell /system/bin/screencap -p /sdcard/img.png
adb pull /sdcard/img.png img.png

См .: http://a -more-common-hades.blogspot.com / 2012/01 / screenshot-command.html

1 голос
/ 01 марта 2012

См. Этот вопрос: Снимок экрана Nexus One с adb?

По сути, вы можете извлечь кадровый буфер с помощью adb и преобразовать его в пригодное для использования изображение самостоятельно, или вы можете просто использоватьУтилита командной строки предоставлена ​​Google.Оглядываясь назад, я думаю, что вам, возможно, придется немного подправить эту утилиту, чтобы она работала на более новых версиях Android.

Как видно из другого ответа, вероятно, проще всего сделать это из Eclipse, если толькоВы пытаетесь автоматизировать тестирование.

1 голос
/ 08 марта 2012

После просмотра исходного кода есть библиотека, которая делает именно то, что я хочу.frameworks \ base \ cmds \ screencap \ screencap.cpp Программу можно запустить на андроиде с помощью / system / bin / screencap.Таким образом, можно выполнить в Java на Android с помощью Runtime.getRuntime (). Exec ();

Недостатком является то, что вам нужен специальный сертификат для создания снимков экрана.

1 голос
/ 01 марта 2012

Ну, это не имеет ничего общего с ICS, но в затмении посмотрите на вкладку Devices.В дальнем правом углу есть маленький значок камеры.(Справа налево это «прямоугольник», «линия», «треугольник вверх ногами» и «камера». Нажмите на эту камеру, чтобы сделать снимок экрана выбранного в данный момент устройства.

Это работаетна любой версии Android, не только ICS.

Device View in DDMS Eclipse

...