2017-01-08 20 views
5

Как сделать снимок экрана через ADB для Android Things? Я пробовал:Android Вещи: сделайте снимок экрана

adb shell screencap -p /sdcard/screen.png 
adb pull /sdcard/screen.png 
adb shell rm /sdcard/screen.png 

и

adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png 
+0

Вы пробовали из самой студии Android? – riggaroo

+0

Спасибо за идею, к сожалению, она выдает ошибку: «Неожиданная ошибка при получении снимка экрана с устройства: EOF» –

+0

Связано ли это с другим вопросом? т. е. с помощью вашего нерабочего экрана, подключенного или нет? У вас был подключен экран hdmi? – Blundell

ответ

2

Я не мог сделать screepcap работу в Android Things Developer Preview. Команда приводит к файлу размером 0.

Это говорит о том, что я рекомендую следующие два варианта: использовать фреймбуфер или записать видео (screenrecord, похоже, работает) и преобразовать его в изображение позже соответствующим инструментом. Я буду рассматривать первый вариант, так бы шаги:

  • Вытащите видеобуфер на хост-машине. Обратите внимание, что вам нужно, чтобы начать adbd как корень, чтобы пройти проверку разрешений:

    adb root 
    adb pull /dev/graphics/fb0 screenshot 
    
  • Преобразования сырого двоичного файла изображения инструмента вы предпочитаете. Я использую . Приведенная ниже команда может не работать для вас из-за разного разрешения экрана или формата пикселей. Если это так, внесите необходимые изменения.

    ffmpeg -f rawvideo -pix_fmt rgb565 -s 800x480 -i screenshot screenshot.png 
    
+0

Используйте 'adb shell dumpsys window | grep mUnres', чтобы узнать разрешение экрана. – Onik

+0

@ Андрей Омельченко Что было не так на первом месте? Неверное разрешение экрана? Какое значение 'pix_fmt' сработало для вас? – Onik

+1

Да, неправильное разрешение экрана и '-pix_fmt rgb565' работает для меня тоже без изменений. И ты классный) Тханкс! –

1

Кажется, из-за старой версии ограничен OpenGL в Android Things, описываемого Tatsuhiko Araihere нет никакой возможности, чтобы получить снимок экрана с помощью ADB, но Вы можете записывать видео (например, из Android Studio, или через ADB commands), а затем захватить кадр из него, например, через ffmpeg:

ffmpeg -i device-2017-01-23-193539.mp4 -r 1 screen-%04d.png 

где device-2017-01-23-193539.mp4 - имя записываемого файла (с помощью Android Studio).

+0

Я заметил, что они не поместили OpenGL в Android-вещи - довольно разочаровывающие –

+0

@Quintin Balsdon _ «Я заметил, что они не помещали OpenGL в Android-вещи». Они сделали. А именно, это 'OpenGL ES-CM 1.0', который можно увидеть с помощью' adb shell dumpsys | grep GLES'. – Onik

+1

Я также сомневаюсь, что это из-за «старой ограниченной версии OpenGL» _. У меня есть «OpenGL ES-CM 1.1» на моем телефоне «Android 4.2», и «screencap» работает, как ожидалось. – Onik