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

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

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);
    }
    

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.