본문 바로가기

IT개발일지/Android

[Android]현재화면 캡처하기 함수

* 현재 보고있는 해당 Activity 의 화면을 캡처할 경우 아래와 같은 함수를 사용하면된다.

 

public File ScreenShotActivity(View view){
view.setDrawingCacheEnabled(true);

Bitmap screenBitmap = view.getDrawingCache();

String filename = "screenshot"+"현재시간milliseonds"+".png";
File file = new File(Environment.getExternalStorageDirectory()+"폴더명", filename);
FileOutputStream os = null;
try{
os = new FileOutputStream(file);
screenBitmap.compress(Bitmap.CompressFormat.PNG, 100, os); //PNG파일로 만들기
os.close();
}catch (IOException e){
e.printStackTrace();
return null;
}

view.setDrawingCacheEnabled(false);
return file;
}

 

1. 만약 화면 캡처후 갤러지에 추가하고 싶은경우

File file = ScreenShot(v);

if(file !=null){
  sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file )));
}

 

2. 캡처한 파일을 공유하기로 내보내고 싶은 경우

try {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(act, "패키지명", file);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
} else {
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
}
act.startActivity(Intent.createChooser(shareIntent, ""));

 

이상 화면 캡처하기 및 갤러리저장하기, 공유하기 포스팅을 마치도록 하겠습니다.