2017-01-08 3 views
5

Wie machst du einen Screenshot über ADB für Android Things? Ich habe versucht:Android Things: nimm einen Screenshot

adb shell screencap -p /sdcard/screen.png 
adb pull /sdcard/screen.png 
adb shell rm /sdcard/screen.png 

und

adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png 
+0

haben Sie aus Android Studio selbst versucht? – riggaroo

+0

Danke für die Idee - leider gibt es einen Fehler: "Unerwarteter Fehler beim Erlangen des Screenshots vom Gerät: EOF" –

+0

Ist das mit Ihrer anderen Frage verbunden? Ist das mit Ihrem nicht funktionierenden Bildschirm verbunden oder nicht? Hast du einen HDMI-Bildschirm angeschlossen? – Blundell

Antwort

2

ich nicht screepcap Arbeit in Android Things Developer Preview machen könnte. Der Befehl führt zu einer 0-Datei.

Das heißt, ich empfehle die folgenden zwei Optionen: entweder den Framebuffer verwenden oder ein Video aufzeichnen (screenrecord scheint zu funktionieren) und konvertieren Sie es zu einem Bild später mit dem richtigen Werkzeug. Ich werde die erste Option in Betracht ziehen, so würden die Schritte:

  • Ziehen Sie den Framebuffer auf der Host-Maschine. Beachten Sie, dass Sie adbd als root starten, um benötigen eine Genehmigung Prüfung zu bestehen:

    adb root 
    adb pull /dev/graphics/fb0 screenshot 
    
  • umrechnen rohe binäre Bild durch das Werkzeug, das Sie bevorzugen. Ich verwende . Der folgende Befehl funktioniert aufgrund unterschiedlicher Bildschirmauflösung oder Pixelformat möglicherweise nicht für Sie. Wenn ja, nehmen Sie die richtigen Änderungen vor.

    ffmpeg -f rawvideo -pix_fmt rgb565 -s 800x480 -i screenshot screenshot.png 
    
+0

Verwenden Sie 'adb shell dumpsys window | grep mUnres', um die Bildschirmauflösung herauszufinden. – Onik

+0

@Andriy Omelchenko Was war falsch an erster Stelle? Falsche Bildschirmauflösung? Welcher Wert von 'pix_fmt' hat für dich funktioniert? – Onik

+1

Ja, - falsche Bildschirmauflösung und '-pix_fmt rgb565' funktionieren auch bei mir ohne Änderungen. Und du bist cool) Danke! –

1

scheint, wegen der alten begrenzten OpenGL Version in Android Things, beschrieben von Tatsuhiko Araihere es keine Möglichkeit Screenshot via ADB zu bekommen, aber Sie können Video (zB von Android Studio aufnehmen oder über ADB commands und) als Fangrahmen von ihm, zum Beispiel über ffmpeg:

ffmpeg -i device-2017-01-23-193539.mp4 -r 1 screen-%04d.png 

wo device-2017-01-23-193539.mp4 - Namen aufgezeichnet (via Android Studio-Datei).

+0

Ich habe bemerkt, dass sie OpenGL nicht in Android-Dinger gebracht haben - ziemlich enttäuschend –

+0

@Quintin Balsdon _ "Ich bemerkte, dass sie OpenGL nicht in Android-Sachen steckten" _ Sie taten. Es ist nämlich "OpenGL ES-CM 1.0", das mit 'adb shell dumpsys | gesehen werden kann Grep GLES'. – Onik

+1

Ich bezweifle auch, dass es wegen _ "alten begrenzten OpenGL-Version" _ ist. Ich habe "OpenGL ES-CM 1.1" auf meinem 'Android 4.2' Telefon und die' screencap' funktioniert wie erwartet. – Onik