2017-01-08 13 views
5

Android 용 ADB를 통해 어떻게 스크린 샷을 찍나요? 나는 시도했다 :Android 항목 : 스크린 샷 찍기

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

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

Android Studio 내에서 시도해 보셨습니까? – riggaroo

+0

아이디어를 제공해 주셔서 감사합니다. 불행히도 "장치에서 스크린 샷을 가져 오는 중에 예기치 않은 오류가 발생했습니다 : EOF" –

+0

다른 질문과 관련이 있습니까? 즉, 작동하지 않는 화면이 연결되어 있는지 여부입니다. hdmi 화면이 연결되어 있습니까? – Blundell

답변

2

내가 안드로이드 것들 개발자 미리보기screepcap 작품을 만들 수 없습니다. 이 명령의 결과는 0 크기 파일입니다.

그렇다면 다음과 같은 두 가지 옵션을 권장합니다. 프레임 버퍼를 사용하거나 비디오 (screenrecord이 작동하는 것 같습니다)를 기록한 다음 나중에 적절한 도구로 이미지로 변환하십시오. 나는 첫 번째 옵션을 고려거야, 그래서 단계는 다음과 같습니다

  • 는 호스트 시스템에 프레임 버퍼를 당깁니다. 당신이 권한 검사를 통과하기 위해 루트로 adbd를 시작해야합니다 :

    adb root 
    adb pull /dev/graphics/fb0 screenshot 
    
  • 당신이을 선호하는 도구로 이미지에 원시 이진 변환합니다. 나는 을 사용하고 있습니다. 아래의 명령은 화면 해상도 나 픽셀 형식이 다르기 때문에 작동하지 않을 수 있습니다. 그렇다면 적절한 변경을하십시오.

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

'adb shell dumpsys window | grep mUnres'를 입력하여 화면 해상도를 찾으십시오. – Onik

+0

@Andriy Omelchenko 처음에는 무엇이 잘못 되었습니까? 화면 해상도가 잘못 되었습니까? 'pix_fmt'의 어떤 가치가 당신에게 효과가 있었습니까? – Onik

+1

네, 잘못된 화면 해상도와'-pix_fmt rgb565'도 변경없이 변경되지 않습니다. 그리고 너 멋지다) 고맙습니다! –

1

는 ADB를 통해 스크린 샷을 얻을 가능성이 없기 때문에 Tatsuhiko Araihere 설명 안드로이드 것들에서 오래된 제한의 OpenGL 버전으로, 보인다,하지만 당신은 안드로이드 스튜디오에서 예를 들어 비디오 (녹화하거나 ADB commands을 통해 수) 및 ffmpeg를 통해 예를 들어 그것에서 잡아 프레임보다 :

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

device-2017-01-23-193539.mp4 - 기록 (안드로이드 스튜디오를 통해) 파일의 이름입니다.

+0

OpenGL을 안드로이드에 넣지 않은 것을 눈치 챘습니다. 꽤 실망 스럽습니다. –

+0

@Quintin Balsdon _ "OpenGL을 안드로이드에 넣지 않은 것을 눈치 챘습니다."_ 그들은 그렇게했습니다. 즉,'OpenGL ES-CM 1.0'은'adb shell dumpsys | grep GLES'. – Onik

+1

나는 또한 "오래된 제한된 OpenGL 버전"_ 때문에 의심 스럽습니다. 내'안드로이드 4.2' 폰에서'OpenGL ES-CM 1.1'을 가지고 있고'screencap'이 예상대로 작동합니다. – Onik