안드로이드 화면 캡춰 소스 : screenshot  함수, sd카드에 png 파일이 저장됨(android.permission.WRITE_EXTERNAL_STORAGE 권한필요)

 - view 단위로 캡춰 가능 (view를 상속받은것들) : 

 - 전체 화면 캡춰 가능 : View capView = getWindow().getDecorView();

 

public class MyTestActivity extends Activity {

View capView;

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button bt_capture = (Button)findViewById(R.id.bt_capture);

        LinearLayout ly_main = (LinearLayout)findViewById(R.id.ly_main);

        bt_capture.setOnClickListener(mClickListener);

        

        capView = ly_main;  // 리니어 레이아웃 캡춰

//        capView = getWindow().getDecorView();  // 전체 화면 캡춰

        

    }

View.OnClickListener mClickListener = new View.OnClickListener() {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.bt_capture:  


try {

screenshot(capView);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

break;

default:

break;

}

}

};    

    

public void screenshot (View view) throws Exception{

view.setDrawingCacheEnabled(true);

Bitmap scrreenshot = view.getDrawingCache();

String filename = "screenshot.png";

try{

File f = new File(Environment.getExternalStorageDirectory(),filename);

f.createNewFile();

OutputStream outStream = new FileOutputStream(f);

scrreenshot.compress(Bitmap.CompressFormat.PNG, 100, outStream);

outStream.close();

}catch( IOException e){

e.printStackTrace();

}

view.setDrawingCacheEnabled(false);

}

}

+ Recent posts