sitelink1 | https://blog.naver.com/chunsj78/220414998376 |
---|---|
sitelink2 | |
sitelink3 |
androidmainfest.xml에 권한 추가
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//클릭이벤트에서 캡처 실행
@Override
public void onClick(View arg0) {
Bitmap screenshot = CaptureUtil.captureScreen(findViewById(android.R.id.content), getApplicationContext());
if(screenshot != null){
try {
CaptureUtil.saveImage(screenshot);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//캡쳐 원문
package co.kr.kookai.util;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
/**
* Created by kookai on 2015-07-07.
*/
public class CaptureUtil {
static final String PICFOLDER = "DCIM/kookai"
save_context = _context;
Bitmap screenshot = null;
try {
if(v!=null) {
screenshot = Bitmap.createBitmap(v.getMeasuredWidth(),v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(screenshot);
v.draw(canvas);
}
}catch (Exception e){
Log.d("ScreenShotActivity", "Failed to capture screenshot because:" + e.getMessage());
}
return screenshot;
}
public static void saveImage(Bitmap bitmap) throws IOException {
mRootPath = Environment.getExternalStorageDirectory() + File.separator + PICFOLDER;
File fRoot = new File(mRootPath);
if(fRoot.exists() == false) {
if(fRoot.mkdir() == false) {
Toast.makeText(save_context, "사진을 저장할 폴더가 없습니다.", Toast.LENGTH_SHORT).show();
return;
}
}
Calendar calendar = Calendar.getInstance();
String FileName = String.format("DG%04d%02d%02d-%02d%02d%02d.jpg",
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 40, bytes);
//File f = new File(Environment.getExternalStorageDirectory() + File.separator + PICFOLDER+"test.png");
String file_path = mRootPath + File.separator +FileName;
File f = new File(file_path);
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.flush();
fo.close();
//파일을 갤러리에 저장
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.parse("file://" + file_path);
intent.setData(uri);
save_context.sendBroadcast(intent);
Toast.makeText(save_context, "SAVE OK ", Toast.LENGTH_SHORT).show();
}
}