Ответ 1
Чтобы он работал @OSX и Linux
adb exec-out screencap -p > screen.png
Я пытаюсь получить скриншот экрана телефона как можно быстрее. В настоящее время я делаю:
adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png
Однако он слишком медленный и занимает до 3 секунд. Есть ли лучший способ сделать это? Я намереваюсь использовать эту функцию с невращающимся телефоном.
И каковы различные аргументы, которые я могу использовать для screencap?
Спасибо.
EDIT (дополнительная информация): Я намереваюсь использовать этот метод, чтобы иметь возможность получать живой эфир экрана на моем компьютере. Текущий метод работает, однако он слишком медленный. Я не могу использовать adb shell screenrecord
, потому что я не смогу получить доступ к видеофайлу во время его записи.
Чтобы он работал @OSX и Linux
adb exec-out screencap -p > screen.png
fooobar.com/questions/332460/... ответ прекратил работать для меня на Android 7 как-то. Поэтому я должен сделать это вручную, поэтому хочу поделиться им.
Поместите этот фрагмент кода в ваш файл ~/.bash_profile
или ~/.profile
:
snap_screen() {
if [ $# -eq 0 ]
then
name="screenshot.png"
else
name="$1.png"
fi
adb shell screencap -p /sdcard/$name
adb pull /sdcard/$name
adb shell rm /sdcard/$name
curr_dir=pwd
echo "save to `pwd`/$name"
}
Запустите команду source ~/.bash_profile
или source ~/.profile
,
Использование без указания имени файла:
$ snap_screen
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/screenshot.png
Использование с именем файла:
$ snap_screen mega_screen_capture
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/mega_screen_capture.png
Надеюсь, что это поможет!
** Это не будет работать, если несколько устройств подключены к
Вы можете прочитать двоичный файл из stdout вместо сохранения png на SD-карте и затем потянуть его:
adb shell screencap -p | sed 's|\r$||' > screenshot.png
Это должно сэкономить немного времени, но не много.
Чтобы начать запись экрана ваших устройств, выполните следующую команду:
adb shell screenrecord /sdcard/example.mp4
Эта команда начнет запись экрана ваших устройств с использованием настроек по умолчанию и сохранит результирующее видео в файле /sdcard/example.mp4 на вашем устройстве.
Когда вы сделаете запись, нажмите Ctrl + C в окне командной строки, чтобы остановить запись на экране. Затем вы можете найти файл записи экрана в указанном вами местоположении. Обратите внимание, что запись на экране сохраняется на вашем внутреннем хранилище устройств, а не на вашем компьютере.
Настройки по умолчанию - это стандартное разрешение экрана вашего устройства, кодирование видео с битрейтом 4 Мбит/с и установка максимального времени записи экрана на 180 секунд. Для получения дополнительной информации о параметрах командной строки, которые вы можете использовать, выполните следующую команду:
adb shell screenrecord --help
Это работает без укоренения устройства. Надеюсь, это поможет.
Используя некоторые знания из этого и нескольких других сообщений, я нашел метод, который работал лучше для меня:
adb shell 'stty raw; screencap -p'
Я опубликовал очень простой Python script в GitHub, который по существу отражает экран устройства, подключенного через ADB:
Извините, что вам просто screencap
просто простая команда, принимайте только несколько аргументов, но ни один из них не может сэкономить вам время, вот вывод справки -h
.
$ adb shell screencap -h
usage: screencap [-hp] [-d display-id] [FILENAME]
-h: this message
-p: save the file as a png.
-d: specify the display id to capture, default 0.
If FILENAME ends with .png it will be saved as a png.
If FILENAME is not given, the results will be printed to stdout.
Помимо команды screencap
, есть еще одна команда screenshot
, я не знаю, почему screenshot
был удален из Android 5.0
, но он доступен ниже Android 4.4
, вы можете проверить источник из здесь. Я не делал сравнения между этими двумя командами быстрее, но вы можете попробовать свои силы в реальной среде и принять окончательное решение.