2011-12-26 6 views
6

다른 Android 기기로 화면을 공유하는 Android 용 애플리케이션에서 작업 중입니다.이 앱은 백그라운드에서 서비스로 실행됩니다.현재 화면 캡처 스크린 샷

화면 (현재 화면)을 캡처하여 JPEG로 저장하고 UDP를 통해 다른 Android 기기로 계속 보내고 싶습니다.

하지만 내 문제는 프레임 버퍼를 캡처하여 현재 화면을 캡처하는 방법입니다.

도와주세요.

답변

3

당신은 뷰의

setDrawingCacheEnabled(true); 

을 활성화하여 레이아웃의 화면을 캡처 할 수 있습니다.

확인이 link

+0

감사합니다. 그러나 이것은 내 응용 프로그램 view.I의 스크린 샷을 제공 할 것입니다. 응용 프로그램이 백그라운드에서 실행될 때 화면에 나타나는 모든 것을 캡처하고 싶습니다. – user1095154

+0

백그라운드 서비스의 스크린 샷을 원하면 ... 알고 싶지 않은 사람이 당신을 도울 것입니다. –

7

안드로이드 프레임 버퍼 (다른 리눅스 시스템)은/디바이스/그래픽/FB0 장치를 개방하여 액세스된다. 이렇게하려면 루트 액세스가 필요하며 루트 액세스가 있어도 모든 장치에서 제대로 작동하지 않습니다. 대부분의 장치는 한 쌍의 프레임 버퍼를 사용하여 프레임 버퍼를 토글합니다. 더 큰 문제는 뿌리 전화로도 Dalvik 시스템의 사용자 ID에 프레임 버퍼 (fb0) 장치에 액세스 할 수있는 권한이 없다는 것입니다. 즉, Java 코드에서 직접 fb0 장치를 열어 읽을 수는 없습니다. 네이티브 리눅스 응용 프로그램을 루트 권한으로 실행해야하며 사용자가 권한을 부여한 후 fb0에 액세스 할 수 있습니다. 나는이 일을하는 데 성공했고, 그것은 상당히 도전적이며 또한 Google에 의해 눈살을 찌푸리게합니다. 여전히 상용 응용 프로그램으로 전환 할 수 있지만 한계와 비 호환성으로 인해 확률이 매우 낮습니다.

+0

안녕 BitBank, 답장을 보내 주셔서 감사합니다. – user1095154

+1

프레임 버퍼에 액세스하기 위해 http://www.pocketmagic.net/?p=1473 링크를 사용했습니다. 하지만 지속적인 스크린 샷 서비스를 사용하여 동일한 코드를 사용하면 메모리 문제가 발생합니다. 그러나 활동을 사용하여 단일 화면을 캡처하면 메모리 오류가 발생하지 않습니다. 도움이 될 – user1095154

+0

프레임 버퍼 메모리를 매핑하고 매핑 해제 하시겠습니까? 아니면 포인터를 유지하고 여러 번 사용하고 있습니까? fb0을 계속 사용하면서 화면을 계속 캡처 할 수있었습니다. – BitBank