정말 너무나 어렵게 원하는 그림팜 어플을
서피스뷰로 구현했했습니다.
그런데 일반적인 코드로 캡쳐를 했더니 시커먼 화면만 저장이 됩니다.
어떻게 해결을 하면 될지 선배개발자님들께 여쭙습니다.
아래는 제가 화면캡쳐 와 공유기능을 구현하기 위한 코드입니다. 어느부분을 수정해야할까요?
public class Share {
Activity mActivity;
String filename;
public Share(PlanSection1A activity) {
mActivity = activity;
}
public Share(ElementalToolActivity activity) {
mActivity = activity;
}
public void save() {
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/과학실험설계사");
if(!dir.exists())
dir.mkdir();
try {
screenshot(mActivity);
} catch (Exception e) {
}
}
public void screenshot(Activity av2)throws Exception {
View view = av2.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
Bitmap screenshot = view.getDrawingCache();
long now = System.currentTimeMillis();
Date date = new Date(now);
SimpleDateFormat sdfNow = new SimpleDateFormat("MM월dd일HH시mm분ss초");
String strNow = sdfNow.format(date);
filename = strNow+".jpg";
try {
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/과학실험설계사/" + filename);
f.createNewFile();
OutputStream outStream = new FileOutputStream(f);
screenshot.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.close();
Toast.makeText(mActivity.getApplicationContext(),filename+" 파일명으로 저장되었습니다.", Toast.LENGTH_LONG).show();
} catch (Exception e) {
}
view.setDrawingCacheEnabled(false);
}
public void share() {
shareImage();
}
public void shareImage() {
if(filename == null) {
Toast.makeText(mActivity.getApplicationContext(), "캡쳐를먼저해주세요!", Toast.LENGTH_SHORT).show();
}
else {
File share = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/과학실험설계사");
String file1 = filename;
File file2 = new File(share, file1);
Uri uri = Uri.fromFile(file2);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpg");
intent.putExtra(Intent.EXTRA_STREAM, uri);
mActivity.startActivity(Intent.createChooser(intent, "공유할App 선택"));
}
}
}