안드로이드 스크린 캡쳐(스샷)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | private void takeScreenshot() { 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 = getActivity().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(); } } | cs |
반드시 스크린 캡쳐를 하기 위해서 사전에 Permission 작업을 하셔야 합니다.
AndroidManifest.xml 에서 추가해주셔야 합니다.
(<application ....> 위에 만들어주시면 됩니다.)
1 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | cs |
현재 화면을 얻어오기
Activity 에서 getWindow().getDecorView().getRootView()
Flagment 에서 getActivity().getWindow().getDecorView().getRootView()
1 2 | View v1 = getActivity().getWindow().getDecorView().getRootView(); v1.setDrawingCacheEnabled(true); | cs |
해당 화면을 Bitmap 으로 전환하기
Bitmap.createBitmap();
1 2 | Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache()); v1.setDrawingCacheEnabled(false); | cs |
해당 Bitmap 으로 만든 이미지는 JPEG 파일 형태로 만들기
bitmap.compress(Bitmap.CompressFormat.JPEF, quality, outputStream);
1 2 3 4 5 6 | File imageFile = new File(mPath); FileOutputStream outputStream = new FileOutputStream(imageFile); int quality = 100; bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream); outputStream.flush(); outputStream.close(); | cs |
이런식으로 스크린캡쳐를 하면 됩니다.
스택오버플로(stackoverflow) 참고
http://stackoverflow.com/a/5651242/3897810
구글 샘플 코드 를 참고하시면 좋습니다 :)
https://github.com/googlesamples/android-ScreenCapture
반응형
'Dev > Android' 카테고리의 다른 글
[Android] 안드로이드 - 폴더 안의 파일 이름 가져오기 (3) | 2017.02.21 |
---|---|
Android - RxAndroid/RxJava 의 combineLatest 예제 1 (0) | 2017.02.20 |
[Android] 안드로이드 Retrofit2 예제 따라하기 - example (1) | 2017.02.04 |
[Android] 안드로이드 TextUtils - TextView 빈값 null 검사 (0) | 2017.02.02 |
[Android] 안드로이드 SQLite 데이터 백업(Backup), 복원(Restore) (1) | 2017.01.16 |