Как получить скриншот экрана или видео с устройства Android

Программирование Android: запись видео и снимок экранаПроблема

Вы хотите сделать снимок экрана (скриншот) или видео приложения, работающего на устройстве Android.

Решение

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

Для получения видео используйте команду adb screenrecord.


Оглавление статьи[Показать]


Обсуждение

 

Захват снимков экрана

Существует несколько способов записи снимков экрана. Современные версии эмулятора Android или AVD имеют панель инструментов с кнопкой камеры, которая работает до тех пор, пока эмулированное устройство основано на интерфейсе API 14 или выше (рис. 1).

Кнопка камеры эмулятора Android

Рис. 1Кнопка камеры эмулятора Android

Снимки, сделанные с помощью этого приема, хранятся на вашем настольном компьютере, а не на устройстве:

$ ls -lt ~/Desktop | head -2

total 12345
-rw-r--r--    1 ian  staff    254317 Nov  6 10:05 Screenshot_1478444709.png
open ~/Desktop/Screenshot_1478444709.png
$

На компьютере Mac команда open обычно открывает файл (очевидно, не так ли?) в выбранном пользователем приложении для обработки изображений (по умолчанию Preview (Предварительный просмотр)).

Если вы работаете на реальном устройстве, используйте встроенную аппаратную функцию для захвата экрана. Все зависит от каждого устройства, но на многих коммерческих устройствах долгое и одновременное нажатие кнопок Power (Питание) и Volume Down (Уменьшение громкости) (или Volume Up и Volume Down) включает камеру и выводит на экран уведомление. Затем вам необходимо найти и извлечь файл с вашего устройства либо с помощью инструмента Android Device Monitor в среде IDE, либо из командной строки, как показано ниже.

$ adb -d ls /sdcard/Pictures/Screenshots
$ adb -d pull /sdcard/Pictures/Screenshots/Screenshot_20160820-104327.png x.png
copy it someplace safe
$ adb -d shell rm /sdcard/Pictures/Screenshots/Screenshot_20160820-104327.png

Эти команды создают список файлов (ls) в папке Screenshots (местоположение которой может немного отличаться на разных устройствах или в версиях) на физическом устройстве (-d). Флаг -d позволяет отключить запущенные эмуляторы или указать длинное имя устройства. Затем мы извлекаем файл из устройства в настольный компьютер, выбирая для него осмысленное имя. После его резервного копирования мы вернемся сюда и удалим (rm) файл с устройства. Это делать не обязательно, но если вы этого не сделаете, вам будет сложнее найти изображения, так как выход из команды ls будет все длиннее и длиннее и не будет выводиться на экран ни в каком полезном порядке.

Считается, что версия Android 7.1 позволяет делать “частичный снимок экрана”, начав аналогичным образом (возможно, нажав кнопки Power + Volume Up?), а затем перетаскивая курсор, чтобы выбрать область экрана. Существует соответствующий код, но это необъявленная функция, поэтому нам еще нужно будет увидеть, станет ли она доступной.

Для того чтобы использовать функцию захвата экрана устройства DDMS, выполните следующие действия:

  1. Запустите приложение в среде IDE и перейдите к представлению DDMS (меню Window menuOpen Perspective → Others DDMS или Window menu → Show View → Other → Android → Devices (Window → Открыть стиль внешнего вида → Другие → DDMS или меню Window →  Показать представление → Другие →  Android → Устройства)). Первая возможность показана на рис. 2).
  2. В представлении DDMS выберите устройство или эмулятор, экран которого хотите захватить.
  3. В представлении DDMS щелкните на пиктограмме Screen Capture (Захват экрана) (рис. 3).

 Запуск представления DDMS

 Рис. 2. Запуск представления DDMS

Захват экрана устройства

Рис. 3Захват экрана устройства

В качестве альтернативы, чтобы сделать это на уровне командной строки, используйте команду adb. Для запуска команды mount, необходимой для того, чтобы найти каталог для записи на вашем конкретном устройстве, выполните команду adb shell, так как большинство версий Android не имеет универсальной папки /tmp. Как только это будет сделано, используйте команду adb shell для запуска программы screencap на устройстве, а затем перетащите файл на рабочий стол, как показано ниже.

$ adb shell screencap -p /mnt/asec/pic.png # Теперь в файле на устройстве
$ adb -e pull /mnt/asec/pic.png            # Теперь в файле на моей машине

[100%] /mnt/asec/pic.png

$ ls -l pic.png                            # Удостоверьтесь!

-rw-r--r--@ 1 ian  staff  59393 Jun 21 17:30 pic.png

$ adb shell rm /mnt/asec/pic.png           # Освобождение хранилища на устройстве

$ # ... теперь что-то делаем с pic.png на машине разработчика

Если вы создаете снимок экрана, нажимая последовательность кнопки на устройстве (обычно одновременно нажимая и удерживая кнопки Power (Питание) и Power Down (Уменьшение громкости), то снимок экрана будет создан в фиксированном каталоге с датой в названии. Вы можете перечислить содержимое каталога с помощью команды ls, перетащить файл вниз и дать ему более информативное имя:

$ adb -d ls /sdcard/Pictures/Screenshots

000041f9 00001000 57c62dd8 .
000041f9 00001000 578f7813 ..
000081b0 000a231c 55760303 Screenshot_20150608-170256.png
000081b0 0001176d 55760308 Screenshot_20150608-170303.png
000081b0 0006b9b4 557a1619 Screenshot_20150611-191328.png
000081b0 0001968a 55869982 Screenshot_20150621-070121.png
... and a bunch more ...

$ adb -d pull /sdcard/Pictures/Screenshots/Screenshot_20160714-093303.png

[100%] /sdcard/Pictures/Screenshots/Screenshot_20160714-093303.png

$ mv Screenshot_2016-07-14-09-33-03.png SomeBetterName.png
$

Метка времени в именах этих файлов указывается в международном стандарте ISO в следующем порядке: год, месяц и день, дефис (-), час, минута и секунда, хотя это не совсем точно соответствует формату ISO.

 

Захват экрана видео

Для того чтобы записать экран вашего устройства для документирования или создания демонстрационных роликов, необходимо запустить программу screenrecord на устройстве, которая создает там файл, а затем использовать команду adb pull или другие средства, чтобы довести файл до вашей настольной системы. Помните, что и ваш настольный компьютер, и ваше устройство имеют подобную иерархическую файловую систему (если вы используете Unix, включая macOS или Linux, структура файловой системы почти идентична, поскольку Android основан на Linux, a Linux — это копия Unix). Просто помните, какие имена файлов к какому компьютеру относятся! Команда adb общается с устройством и запускает оболочку shell или командный интерпретатор, который мы используем для запуска команды screenrecord на устройстве и захвата вывода во временный файл в каталоге /sdcard:

$ adb shell screenrecord /sdcard/tmpFileName.mp4

 Теперь вы можете взаимодействовать с приложением, чтобы показать ошибку или функцию, которую вы хотите документировать. Когда вы закончите, остановите команду adb, например, нажав клавиши <Ctrl+C> в терминальном окне. Затем вытащите временный файл из папки /sdcard на устройство в удобное место на рабочем столе (одновременно можете присвоить ему более удачное имя, если хотите, например myScreencastSegment.mp4):

$ adb pull /sdcard/tmpFileName.mp4 myScreencastSegment.mp4

Затем вы можете просматривать или публиковать видеоролик с помощью любых инструментов, которые есть на вашей настольной системе. На рис. 4 показано простое видео, записанное устройством и загруженное на мой рабочий стол.

Захват экрана видео во время воспроизведения

Рис. 4. Захват экрана видео во время воспроизведения

Как только видео окажется на вашем рабочем столе (и будет выполнено его резервное копирование!), вы, вероятно, захотите удалить файл с устройства, чтобы оно не занимало место на диске:

$ adb rm /sdcard/tmpFileName.mp4

 

См. также

Руководство пользователя Android Studio User Guide на страницах:

https://developer.android.eom/studio/command-line/adb.html#screencap и

https://developer.android.eom/studio/command-line/adb.html#screenrecord.

 

Вас заинтересует / Intresting for you:

Версии платформы Android
Версии платформы Android 2505 просмотров Илья Дергунов Sun, 04 Nov 2018, 14:44:59
Источники примеров кода для со...
Источники примеров кода для со... 3573 просмотров Валерий Павлюков Sat, 24 Nov 2018, 12:19:04
О платформе Android
О платформе Android 4881 просмотров Илья Дергунов Mon, 29 Oct 2018, 17:07:02
Как научиться создавать прилож...
Как научиться создавать прилож... 2027 просмотров Antoni Fri, 12 Jul 2019, 06:34:30
Печать
Войдите чтобы комментировать