출처 : http://louise.tistory.com/71



참조 : 갤럭시S 중복 저장 문제  http://www.androidpub.com/733994


         갤러리에 저장해서 불러오기:  http://moss.tistory.com/7


*. 사진 찍기

0. request code 정의

private final static int ACT_TAKE_PIC = 1;


 1. 원하는 지점에서 intent 호출


 Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

 startActivityForResult(cameraIntent,ACT_TAKE_PIC);



2. 결과 받기.


 protected void onActivityResult(int requestCode, int resultCode, Intent data) {

     super.onActivityResult(requestCode, resultCode, data);

     switch(requestCode) {

      case ACT_TAKE_PIC:

       if (resultCode == RESULT_OK)

       {

        try{

             (Bitmap)data.getExtras().get("data"); //섬네일

            } catch(Exception e){ 

            }

       }

       break;

     }

    }



3. 섬네일 이외의 풀사이즈를 받기 위해서는

  MediaStore.EXTRA_OUTPUT으로 uri를 지정해주어야 한다.

 intent 호출시 아래 추가.


File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/my/", "pic.jpg");

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));



결과 처리시 Access

 ** 이때 메모리 부족으로 호출한 Activity가 dealloc될수 있음을 상기하자 또한 이때 onActivityResult() Intent data값이 null이 들어 올수도 있다.

(Bitmap)data.getExtras().get(MediaStore.EXTRA_OUTPUT);



* Bitmap Uri에서 불러오기

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/my/", "pic.jpg");


Bitmap bm = Media.getBitmap(getContentResolver(), Uri.fromFile(file));


* Image View에 Bitmap 설정


Bitmap bm = (Bitmap) data.getExtras().get("data");

imgPic.setImageBitmap(bm);

imgPic.setScaleType(ImageView.ScaleType.FIT_XY);

+ Recent posts