안드로이드에는 기본적으로 Gallery와 Camera app.이 설치되어 있습니다.  물론 디바이스 제조업체에서 그 필요에 따라 기본적인 기능의 Camera app.보다 좀 더 다양한 기능을 하는 (하드웨어적으로 더 다양하고 좋은 기능을 장착했을 경우에도..) Camera app.을 개발하여 사전에 장착했을 수 도 있습니다.

개인적으로는 좀 더 나은 기능의 Camera app.을 설치 했을 경우라도 안드로이드 플랫폼에서 제공하는 기본적인 기능의 Camera app.은 지원해야 하지 않나 합니다.  현재 안드로이드 디바이스가 얼마 되지 않아 지원 하는지 안 하는지는 잘 모르겠습니다.  그 이유는 새로운 기능의 Camera app.은 물론 다른 패키지, 클래스 이름을 사용할 것이기 때문에 Camera app.과 연계하는 app.에서 Camera 기능을 사용하는 데 있어 제약이 있기 때문입니다.  그러므로 기본적인 Camera app.이 지속적으로 지원 된다면 연동하는 데 있어 별 문제가 없겠죠.

다음 코드는 어떤 app.이 Gallery에 있는 이미지 리스트를 확인하고 불러오는 부분 입니다.  MIME 타입 정의에 따라 원하는 리스트를 정의할 수 있습니다.  여기에서 당연 눈에 띄는 부분은 Intent.ACTION_GET_CONTENT 입니다.  처음에 이 코드를 보았을때 과연 이 Action이 어떤 Activity를 불러올까 였는데 기본 안드로이드 플랫폼에서는 Gallery의 리스트를 호출하더군요.  안드로이드 디바이스 제조업체에서도 이 Action을 적절한 Activity와 연결해 주었길 기대해 봅니다. 

                Intent intent = new Intent();  
                intent.setAction(Intent.ACTION_GET_CONTENT);  
        intent.setType("image/*");  
       startActivityForResult(intent ,REQ_IMAGE_SELECT);

콘텐츠를 선택하면 아래 부분이 불려지게 됩니다.  성공여부와 Activity를 불렀을 때 보냈던 코드와 더불어 Intent가 오게 됩니다.  이 Intent에 data에 대한 정보가 들어 있습니다.  여기서는 선택한 콘텐츠의 Uri 정보를 리턴합니다.

onActivityResult(int requestCode, int resultCode, Intent data)

Uri curImgURI = data.getData();

이제 받은 콘텐츠 Uri를 가지고 적절히 사용하면 됩니다.

단순히 저장된 컨텐츠를 가져오는 것이 아니라 Camera Activity를 호출하여 바로 찍은 콘텐츠를 가져오고자 할때는 어떻게 할까요.  아래와 같습니다.  물론 Camera Activity를 직접 호출할 수도 있습니다.  패키지와 클래스를 다음과 같이 ("com.android.camera", "com.android.camera.Camera") 설정해서 startActivity를 날리면 됩니다.  
문제는 이렇게 해서 콜을 하면 안드로이드 플랫폼 상의 기본 Camera app.이 실행이 됩니다.  안드로이드 디바이스 제조업체에서 기본 카메라 기능이 떨어져서 빼버리고 나름대로의 Camera app.을 만들어 넣어 놓았다면 과연 실행될까 하는 의문입니다.  안된다고 봅니다.  그래서 아래와 같은 MediaStore.ACTION_IMAGE_CAPTURE 를 써보았습니다.  일단 기본 안드로이드 플랫폼에서는 기본 Camera를 띄우지만 (그것밖에 없기 때문에 그렇다고 생각됩니다) 다른 Camera app.이 있다면 자체적으로 연계해서 동작시키지 않을까 하는 기대를 해 봅니다.  

Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQ_CAMERA_SELECT);

결과는 좀 다르게 받게 됩니다.  결과 값을 bitmap으로 보내 줍니다.  나머지는 위와 동일합니다.

                Bitmap bm = (Bitmap) data.getExtras().get("data");
저작자 표시 비영리 변경 금지
by <!--r'i"z&i\n+#]]x juree23 2010/07/23 17:15
| 1 ... 220 221 222 223 224 225 226 227 228 ... 800 |