2016년 2월 22일 월요일

안드로이드 팁 > 사진찍고 결과받기 예제소스 참고하세요~



안드로이드 팁 > 사진찍고 결과받기

요즘 스마트폰에서 풍경이나 음식점 등에서 사진찍어서 스마트폰으로 업로드하는 서비스가 많아서 그만큼 개발도 많이해요..
아래 소스를 활용하여 쉽게 구현하세요~

제목 : Intent MediaStore.ACTION_IMAGE_CAPTURE를 이용하여 사진찍어서 결과받기



소스)
private final static int ACT_TAKE_PIC = 1;

1. 원하는 곳에서 intent 호출해줘요
Intent cameraInt = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraInt .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){
                ;
            }
        }
    }
}

3.썸네일 이미지 이외의 풀사이즈를 받기 위해서는 MediaStore.EXTRA_OUTPUT으로 uri를 지정해주세요~
intent 호출시에 아래부분을 추가해주세요~
File file =
 new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/saveFolder/", "사진.jpg");
cameraInt .putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));

* 결과처리시 중요한 부분
사진선택시 메모리의 부족으로 호출한 액티비티가 dealloc될수 있음을 아셔야 해요~ 
또한 이 겨우에 onActivityResult() Intent data 값이 null이 들어 올 수도 있어요...
(Bitmap)data.getExtras().get(MediaStore.EXTRA_OUTPUT);

* Bitmap Uri에서 불러오기
File file =
  new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"\saveFolder/", "사진.jpg");
Bitmap bm = Media.getBitmap(getContentResolver(), Uri.fromFile(file));

* ImageView에 Bitmap 설정
Bitmap bm = (Bitmap)data.getExtras().get("data");
imgPic.setImageBitmap(bm);
imgPic.setScaleType(ImageView.ScaleType.FIT_XY);

* 중요함수 및 오브젝트
getExternalStorageDirectory
MediaStore.EXTRA_OUTPUT
data.getExtras()

이미지 처리 부분은 이런데,,,, 여러번 해보시면서 시행착오를 좀 겪으셔야 여러분의 것이 될 수 있어요...
이미지 회전하는  부분도 있고, 이미지의 일부분만 캡춰해서 오는 부분도 있으니 이리저리 코딩해서 돌려보세요~

즐거운 시간 보내세요~


댓글 없음:

댓글 쓰기