Korzystanie z ADB do przechwytywania ekranu


Staram się jak najszybciej zrobić zrzut ekranu telefonu.
Aktualnie robię:
adb shell screencap -p/sdcard/screencap.png && adb pull/sdcard/screencap.png

Jest to jednak zbyt wolne i trwa do 3 sekund.
Czy jest lepszy sposób, aby to zrobić? Zamierzam używać tej funkcji z niezrootowanym telefonem.
Ponadto, jakich różnych argumentów mogę użyć w przypadku screencapu?
Podziękować.
EDYCJA (więcej informacji): Zamierzam użyć tej metody, aby móc uzyskać transmisję ekranu na żywo na mój komputer. Obecna metoda działa, ale jest zbyt wolna. Nie mogę użyć
adb shell screenrecord
, ponieważ nie mogę uzyskać dostępu do pliku wideo podczas jego nagrywania.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby to działało w OSX i Linux
adb exec-out screencap -p > screen.png
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

https://stackoverflow.com/a/37191719/75579
https://stackoverflow.com/a/37191719/75579
odpowiedź jakoś przestała mi działać w Androidzie 7. Więc muszę to zrobić ręcznie, więc chcę się tym podzielić.

Jak zainstalować program
>
  • Umieść ten fragment kodu w swoim pliku
    ~/.bash_profile
    lub
    ~/.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"}
  • Uruchom polecenie
    source ~/.bash_profile
    lub
    source ~/.profile
    ,


Jak używać
>
Używanie bez określania nazwy pliku:
$ snap_screen
11272 KB/s (256237 bytes in 0.022s)
Saved to/Users/worker8/desktop/screenshot.png

Użycie z nazwą pliku:
$ snap_screen mega_screen_capture
11272 KB/s (256237 bytes in 0.022s)
Saved to/Users/worker8/desktop/mega_screen_capture.png

Mam nadzieję że to pomoże!
** To nie zadziała, jeśli podłączonych jest wiele urządzeń
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby rozpocząć nagrywanie ekranu urządzenia, uruchom następujące polecenie:
adb shell screenrecord/sdcard/example.mp4

To polecenie rozpocznie nagrywanie ekranu urządzenia przy użyciu ustawień domyślnych i zapisze wynikowe wideo do pliku w pliku/sdcard/example.mp4 na urządzeniu.
Po zakończeniu nagrywania naciśnij Ctrl + C w oknie wiersza polecenia, aby zatrzymać nagrywanie ekranu. Następnie możesz znaleźć plik nagrania ekranu w określonej lokalizacji. Należy pamiętać, że nagranie ekranu jest zapisywane w pamięci wewnętrznej urządzenia, a nie na komputerze.
Domyślnie używana jest standardowa rozdzielczość ekranu urządzenia, kodowanie wideo z szybkością transmisji 4 Mb/si maksymalny czas nagrywania ekranu 180 sekund. Aby uzyskać więcej informacji na temat parametrów wiersza polecenia, których możesz użyć, uruchom następujące polecenie:
adb shell screenrecord --help

Działa to bez rootowania urządzenia. Mam nadzieję że to pomoże.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz odczytać plik binarny ze standardowego wyjścia zamiast zapisywać plik png na karcie SD, a następnie wyciągnąć go:
adb shell screencap -p | sed 's|\r$||' > screenshot.png

Powinno to zaoszczędzić trochę czasu, ale nie za dużo.
źródło:

odczytywanie danych binarnych stdout z powłoki adb?
https://coderoad.ru/13578416/
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Korzystając z wiedzy z tego i kilku innych postów, znalazłem metodę, która działa najlepiej dla mnie:
adb shell 'stty raw; screencap -p'
Opublikowałem bardzo prosty skrypt Pythona na GitHubie, który zasadniczo odzwierciedla ekran urządzenia podłączonego przez ADB:
https://github.com/baitisj/android_screen_mirror
https://github.com/baitisj/android_screen_mirror
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przykro mi, że
screencap
to po prostu proste polecenie, które wymaga tylko kilku argumentów, ale żaden z nich nie pozwala zaoszczędzić czasu. Oto wyjście pomocy
-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.

Oprócz polecenia
screencap
jest jeszcze jedno polecenie
screenshot
, nie wiem, dlaczego
screenshot
zostało usunięte z
Android 5.0
. ale jest dostępny poniżej
Androida 4.4
, źródło możesz sprawdzić tutaj. Nie dokonałem własnego porównania, które jest szybsze między nimi, ale możesz wypróbować to w swoim prawdziwym środowisku i podjąć ostateczną decyzję.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się