안드로이드에서 스크린샷 찍는건 어떻게 하는거죠?


프로그램 안쓰고 코드로 디바이스의 선택한 범위만 스크린 샷 찍고 싶은데 가능 할까요?

  • 2016년 01월 20일에 작성됨

조회수 227


1 답변


좋아요
0
싫어요
채택취소하기

밑에 코드는 스크릿샷을 찍어서 디바이스의 sd카드에 저장해줍니다.

처음에 매니페스트 파일에가서 ****를해줍니다. 그리고 돌아가는 액티피티 클래스에서

private void takeScreenshot() {
    Date now = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);

    try {
        // image naming and path  to include sd card  appending name you choose for file
        String mPath = Environment.getExternalStorageDirectory().toString() + "/" + now + ".jpg";

        // create bitmap screen capture
        View v1 = getWindow().getDecorView().getRootView();
        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        File imageFile = new File(mPath);

        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 100;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();

        openScreenshot(imageFile);
    } catch (Throwable e) {
        // Several error may come out with file handling or OOM
        e.printStackTrace();
    }
}

라는 메소드를 만들어주시고 캡쳐한 사진을 열고싶으면

private void openScreenshot(File imageFile) {
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    Uri uri = Uri.fromFile(imageFile);
    intent.setDataAndType(uri, "image/*");
    startActivity(intent);
}

이런 메소드도 추가시켜주시면됩니다.

  • 2016년 01월 20일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close