2010. 12. 3. 20:44
Intent에 의한 사진뷰어, 갤러리, 카메라 제어
2010. 12. 3. 20:44 in 개발/모바일OS(안드로이드,아이폰,윈도모바일등)
Intent는 정말 보면 기존 어플들의 기능을 재사용할 수 있도록 해주는 고마운 기능인것 같습니다.
사진보기, 갤러리, 카메라는 Intent를 활용하여서 제어를 할 수 있기 때문에 또다시 이런 기능을 또 만들지 않도록 할 수 있고 개발기간을 단축할 수 있으며, 사용자에게도 익숙한 UI 이기때문에 효율성인 측면에서 대단히 좋은 기능이 아닐 수 없습니다. 따라서 이 세가지 기능에 대해서 정리를 해보았습니다.
1. 갤러리 관련 제어
- 내장되어 있는 갤러리를 호출하여 사진을 선택 후 내가 어떤 사진을 선택했는지 URI로 가지고 데이터를 설정한다.
- 갤러리 리스트뷰 호출
Intent i = new Intent(Intent.ACTION_PICK); i.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE); i.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // images on the SD card.
// 결과를 리턴하는 Activity 호출 startActivityForResult(i, REQ_CODE_PICK_PICTURE);
- 갤러리 리스트뷰에서 사진 데이터를 가져오는 방법
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_CODE_PICK_PICTURE) {
if (resultCode == Activity.RESULT_OK) {
ImageView img = (ImageView)findViewById(R.id.image);
img.setImageURI(data.getData());
// 사진 선택한 사진URI로 연결하기
}
}
2. 사진뷰어 호출
// 개별 이미지에 대한 URI 생성
// ex>uri = content://media/external/images/media/4 --> 4 = id
Uri uri = ContentUris.withAppendedId( Images.Media.EXTERNAL_CONTENT_URI, id); // id값은 사진고유 ID
Intent intend = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intend);
// ex>uri = content://media/external/images/media/4 --> 4 = id
Uri uri = ContentUris.withAppendedId( Images.Media.EXTERNAL_CONTENT_URI, id); // id값은 사진고유 ID
Intent intend = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intend);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);