안드로이드 웹뷰에서 화면 캡쳐하기

아래의 코드는 테스트 코드 입니다. 현재 화면 전체를 캡쳐를 할 수가 없어서 지금 계속 테스트 중에 중간 저장을 위해서 코드를 기록을 해 놓습니다.

        wvPrint.loadUrl(Url);
        wvPrint.enableSlowWholeDocumentDraw();

        wvPrint.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                Log.i("deneb::", "page finished loading " + url);

                float scale = wvPrint.getScale();
                int height = (int) (wvPrint.getContentHeight() * scale + 0.5);
                Bitmap bitmap = Bitmap.createBitmap(780, height, Bitmap.Config.ARGB_8888);
                Canvas canvas = new Canvas(bitmap);
                wvPrint.draw(canvas);

                // 파일 저장
                String strFilePath = context.getCacheDir().toString();
                Log.d("deneb::", "경로 :: " + context.getCacheDir().toString());
                File fileCacheItem = new File(strFilePath, "print_page.png");
                OutputStream out = null;

                try {
                    fileCacheItem.createNewFile();
                    out = new FileOutputStream(fileCacheItem);
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        out.close();
                        double yPointLimit = Math.ceil(height / 780 );
                        int yPointLimit2 = (int) yPointLimit;
                        Log.d("deneb::", "몇장 ?? " + yPointLimit2);
                        int yPoint = 0;
                        for(int i = 0; i < yPointLimit2; i++) {
                            yPoint =  yPoint + 780;
                            DenebPrinter.printpicCode(bitmap, context, yPoint);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            }
        });

현재 코드자체가 정리가 되지 않기 때문에 별로 도움이 되지 않기 때문에 기록형식으로만 봐주시기 바랍니다.

이전글
다음글

답글 남기기

이메일 주소는 공개되지 않습니다.