sitelink1 | https://jess0718.blog.me/40122824255 |
---|---|
sitelink2 | |
sitelink3 |
아래의 코드에서 '디렉토리명'과 '파일명' 부분에 자신이 원하는 디렉토리명과 파일명을 입력해주면 되겠다.
private void screenshot(Bitmap bm) {
try {
File path = new File("/디렉토리명");
if(! path.isDirectory()) {
path.mkdirs();
}
String temp = "/디렉토리명/";
temp = temp + "파일명";
temp = temp + ".jpg";
FileOutputStream out = new FileOutputStream(temp);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
} catch (FileNotFoundException e) {
Log.d("FileNotFoundException:", e.getMessage());
}
}
간단하게 코드를 설명하자면 path에 디렉토리 경로를 저장하고 만약 디렉토리가 존재하지 않으면 디렉토리를 생성하게 한다.
그 다음으로 디렉토리명에 파일명을 붙여 저장될 파일명을 지정하는 과정을 거쳐 파일 출력을 통해 JPEG파일의 형태로 저장하게 된다.
그 다음으로 브로드캐스트를 통해 새로운 파일을 검색하도록하여 갤러리에서 저장된 그림 파일을 확인할 수 있게 해준다.
위의 메소드만 실행해서는 파일이 저장되었는지 확일 할 수 없으므로 위의 뇌구조 테스트 어플에서 처럼
어떠한 파일명으로 저장되었는지 확인 출력해주는 토스트 메시지를 하나 간단하게 띄워주면 더욱 좋을 것 같다.
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
View v1 = layout.getRootView();
v1.setDrawingCacheEnabled(true);
bm = v1.getDrawingCache();
screenshot(bm);
Toast.makeText(MainActivity.this, "저장되었습니다.", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
});
위의 스크린샷 메소드를 사용하는 부분의 소스코드이다. try-catch문의 스크린샷 메소드 호출 전에 루트뷰를 얻는 부분과
메소드 아래의 토스트 메시지를 띄워 저장이 되었음을 알려주는 부분으로 나눠볼 수 있을 것 같다.