Сегодня я хотел бы поделиться с вами небольшим и очевидным лайфхаком, который я использовал, чтобы наделать много скриншотов для своей игры.
Он особенно полезен, когда вы разрабатываете динамичную игру, в которой эффектная сцена может случиться за доли секунды, и, конечно, вы не успеете даже и глазом моргнуть, не то чтобы сделать снимок экрана.
Почему не воспользовался сторонней утилитой? Лично я не хотел тратить время на поиски подходящей утилиты и устанавливать что-то дополнительно себе на устройство. К тому же я сомневаюсь, что такие утилиты смогут записывать снятый скриншот сразу на компьютер, не тратя память устройства и ваше время.
РЕКОМЕНДУЕМ:
Как продвигать мобильное приложение
Почему не снять видео и не вырезать кадры? Во первых, для этого нужен редактор видео, или хотя бы видеоплеер, а у меня на рабочей лошадке ничего этого не было. И зачем мне все это, если цель — парочка, а может десяток, эффектных скриншотов.
Конечно, полноценное видео лучше скриншотов, но скриншоты тоже нужны, когда, например, делаешь описание для Google Play.
Пакетное снятие скриншотов с помощью PowerShell и ADB
В общем, я недолго думая решил воспользоваться средствами, которые у меня уже были, а именно adb и PowerShell. Суть метода простейшая: мы используем интерфейсы adb, чтобы снять скриншот и переместить файлы с девайса на компьютер. Наверное, можно это сделать и обычным батником, но мне PowerShell немного ближе.
Из подготовительных шагов — установить Android SDK, что, думаю, у вас уже есть. Девайс, естественно, должен быть подключен к компьютеру и должен быть распознан adb.
Собственно сам скрипт с комментариями представлен в листинге ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$pcpath = "C:\Dev\Screenshots" #путь до папки, где вы хотите сохранять скриншоты $dirname = "temp" #имя папки, в которой будут временно сохраняться картинки на девайсе $devpath = "/sdcard/" + $dirname #путь до временной папки # проверяем наличие этой папки на девайсе и создаем ее, если надо $list = .\adb.exe shell ls "/sdcard/" if ($list -notlike $dirname) { .\adb.exe shell mkdir $devpath } # Собственно цикл снятия скриншотов for (;;) { #для маркировки скриншотов я использовал дату, но можно делать что угодно $time = Get-Date -Format "yyyyMMddhhmmss" // получаем штамп времени в нужном формате # формируем имя файла и необходимые пути $filename = $time + ".png" $tempfile = $devpath + $filename $endfile = $pcpath + $filename # снимаем скриншот ./adb.exe shell snapshot $tempfile # помещаем скриншот на компьютер ./adb.exe pull $tempfile $endfile 2>$null # удаляем временный файл ./adb.exe deletefile # ждем определенное время, прежде чем делать следующий Start-Sleep 1 // указываете интервал снятия в минутах. Для секунд можно указать параметр - seconds } |
Запустите PowerShell ISE, сохраните скрипт и запускайте, когда хотите начать съемку.
Скорее всего вам надо будет разрешить выполнение скриптов. Подробнее про это вы можете прочитать в официальной справке. Я выполнил команду Set-ExecutionPolicy Unrestricted в PowerShell, чтобы разрешить выполнение любых скриптов. Позднее можно опять запретить выполнение скриптов командой Set-ExecutionPolicy Restricted.
После запуска скрипта adb начинает снимать скриншоты и помещать их в указанную папку. Вы просто запускаете игру и генерируете яркие моменты не задумываясь о том, как их запечетлять. Потом вы просто просмотрите получившиеся результаты и выберете самые сливки.
РЕКОМЕНДУЕМ:
Серые методы продвижения приложений в Google Play
Надеюсь, что этот маленький лайфхак поможет вам сэкономить время и силы и получить эффектные скриншоты для своего промо.