Przygotowując materiały (grafiki) do artykułu o menedżerze haseł Bitwarden, wrzuciłem do aplikacji, w której trzymam m.in. pomysły na kolejne artykuły (Trello) cegiełkę dotyczącą zrzutów ekranu, czyli czegoś, z czego często korzystam, i często o to dostaję pytania. Pisząc precyzyjniej, chodzi o zrzuty z ekranu telefonu. Zwłaszcza z aplikacji, które takie operacje blokują. A, że wdrożenie takiej blokady jest wręcz banalne, to coraz więcej aplikacji z tego korzysta, nawet jeśli nie ma takiej potrzeby…

Nagrywanie ekranu w Androidzie nawet z aplikacji, które to blokują

Przez ostatnie kilka lat narzędzi, z których korzystam do tego celu, było co najmniej kilka. Zmieniały się wraz z telefonami i samym Androidem. Zwłaszcza że nie na każdym „robiłem roota”, co zazwyczaj rozwiązywało też problem ewentualnych blokad.

I choć na biurku cały czas leży zrootowana Moto G, by w razie potrzeby ciężar robienia zrzutów ekranu wziąć na siebie, to sięgam po nią – przynajmniej do tego celu – coraz rzadziej. I to pomimo tego, że mój główny telefon (Huawei P20 Lite) nie ma roota, a więc wszelkiej maści ograniczenia w wykonywaniu zrzutów ekranu go dotyczą.

Z pomocą przychodzi program Scrcpy, dzięki czemu obraz z telefonu – korzystająć z ADB i trybu debugowania – mogę wyświetlić na komputerze (aplikacja Twój Telefon, którą Microsoft rozwija w systemie Windows 10 teoretycznie też to potrafi, ale nie wiem, czy i jak radzi sobie z blokadami, bo dla mojego telefonu ta opcja jest niedostępna). A jak mam na komputerze, to zrzuty ekranu mogę robić dowolnie, w tym tak jak w większości przypadków mi najwygodniej. Czyli z wykorzystaniem klawiszy ALT i Print Screen, oraz aplikacji One Drive, dzięki czemu każdy zrzut ekranu automatycznie ląduje jako plik graficzny w odpowiednim katalogu. No i jest jeszcze bonus – za pomocą okna wygenerowanego przez Scrcpy można też sterować telefonem.

Teoretycznie samo ADB też pozwala wykonać zrzut ekranu na telefonie:

adb shell screencap /sdcard/screencap.png

Ale metoda ta – podobnie jak zwykły zrzut ekranu w telefonie – nie działa w przypadku aplikacji, które mają zrzuty ekranu zablokowane.

A z obrazem wyświetlonym na komputerze za pomocą programu Scrcpy (dostępny jest nie tylko na Windowsa, ale i na Linuksa czy MacOS) takiego problemu nie ma:

Powyżej kilka przykładowych zrzutów, z takich aplikacji jak Authy, Signal (z włączoną blokadą), opisywany wczoraj Bitwarden, mBankNest Bank, oraz eDO AppmObywatel. Wszystkie z blokadą uniemożliwiającą wykonanie zrzutu z poziomu (niezrootowanego) telefonu.

Obsługa aplikacji Scrcpy

A najlepsze to, że obsługa Scrcpy jest więcej niż prosta. Tak naprawdę potencjalnie największa trudność to uruchomienie trybu debugowania w opcjach dla programisty, oraz wiersza poleceń na komputerze, do którego podłączony jest telefon.

Podstawowe polecenie, z którego najczęściej korzystam to:

scrcpy --window-borderless --stay-awake

Można – tak jak zrobiłem to na testowych zrzutach powyżej – dodać nazwę okna. Wygląda to moim zdaniem słabiej niż wersja „bezramkowa”, ale jest i taka możliwość:

scrcpy --window-title 'Webinsider.pl' --stay-awake

Możemy też bezpośrednio z poziomu Scrcpy nagrać film (MP4, MKV):

scrcpy --record file.mp4 --stay-awake

A nawet przy tej okazji wyłączyć ekran w telefonie, by ewentualnie podnieść trochę wydajność:

scrcpy --no-display --record file.mp4

Możemy wybrać liczbę klatek na sekundę, z jaką ma się wyświetlać na komputerze obraz z telefonu (oficjalnie działa na Androidach w wersji 10 lub nowszych, ale na starszych też ponoć może zadziałać:

--max-fps 15

Domyślnie obraz z telefonu jest pobierany z „przepływnością” (bitrate) 8 Mbps, ale można i to zmienić:

--bit-rate 2M

A nawet włączyć wyświetlanie na pełnym ekranie:

--fullscreen

A do tego obraz można obrócić, jeśli zajdzie taka potrzeba:

--rotation X

Gdzie zamiast X dajemy cyfrę od 1 do 3:

  • 1 – 90 stopni w lewo
  • 2 – 180 stopni
  • 3 – 90 stopni w prawo

Można też użyć zera (0), by obrócić obraz o 360 stopni… ;-)

(!) Zgłoś błąd na stronie