본문 바로가기

IT개발/안드로이드

안드로이드 화면 캡쳐하기 (코드에서)

안드로이드 개발자라면 기본적으로 디바이스의 화면을 DDMS에서 버튼 클릭으로 캡쳐가 가능하다는 사실을 알고 있을 것이다.

 

그건 그렇고…

 

소스 코드에서 캡쳐하는 방법은 없을까…..

 

여기 있다..

 

public void screenshot(View view)throws Exception {      

view.setDrawingCacheEnabled(true);

Bitmap screenshot = view.getDrawingCache();

String filename = "screenshot.png";

try {

File f = new File(Environment.getExternalStorageDirectory(), filename);

f.createNewFile();

OutputStream outStream = new FileOutputStream(f);

screenshot.compress(Bitmap.CompressFormat.PNG, 100, outStream);

outStream.close();

catch (IOException e) {

e.printStackTrace();

}

view.setDrawingCacheEnabled(false);

}


SDCard 에 파일을 담아준다.

화면에 뿌릴때 캐시를 사용하게 하여, 중간에 그 캐시를 가로채는 것이다.

가로챈 캐시를 Bitmap으로 담아와서 PNG 형식으로 저장한다.


파라미터는 현재 화면의 View 이다. 전체 화면을 캡쳐하고 싶으면

Activity.getWindow().getDecorView()

을 주면 되겠다.