세이박스

안드로이드 폰의 기본 카메라 앱을 이용한 사진 촬영 (Intent)

모바일앱개발
단말에 있는 카메라 앱을 띄워주는 방법
앱에서 상당히 많이 사용하는 기능
인텐트를 사용하는 방법으로 안드로이드 폰의 기본 카메라 앱을 이용해서
촬영한 결과를 가져오는 방법과 직접 촬영하는 기능을 만드는 방법이 있다.

* 직접 촬영 기능을 구현할땐, 카메라 미리보기를 위해서는 영상을 실시간으로 보여주기 위해서는 성능이 중요해서 하드웨어 가속 기능을 사용할 수 있는 서피스뷰(SurfaceView)를 사용한다.

아래 소스는 안드로이드의 기본 앱을 이용(Intent)해서 촬영하는 예제 이다.

1. 레이아웃 파일
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:onClick="onButtonCamera" />
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView"
        android:layout_below="@+id/button"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>


2. 자바소스
    ImageView imageView;
    File outputFile;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.imageView);
        File storageDir = Environment.getExternalStorageDirectory();
        outputFile = new File(storageDir, "output.jpg");
    }
    public void onButtonCamera(View v) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outputFile));
        startActivityForResult(intent, 1001);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == 1001) {
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 8;
            Bitmap bitmap = BitmapFactory.decodeFile(outputFile.getAbsolutePath(), options);
            imageView.setImageBitmap(bitmap);
        }
    }

3. 퍼미션
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.camera" android:required="true"></uses-permission>









[DSLR] 2010 부산국제 모터쇼 레이싱걸 포토 모델, 손봄

기타
사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Aperture priority | Spot | 1/40sec | F/2.8 | 0.00 EV | 31.0mm | Flash did not fire


촬용장소 : 부산 해운대 벡스코 국제 모터쇼 (BEXCO)
사용바디 : 니콘 D70s
사용랜즈 : 탐론 17-50mm, F2.8

레이싱모델 : 손봄(손미영)
출생 : 1985년 5월
신체 : 173cm, 52kg
소속사 : 미스디카
수상 : 2010년 CJ 오 슈퍼레이스 레이싱모델 선발대회 슈퍼레이스상
경력 :
2009 스쿠터레이스 미스디카 레이싱모델
2009 GT마스터즈 영오토 레이싱모델
2009 서울오토살롱 사이버오토 레이싱모델

국제 모터쇼에서 유일하게 이름 메모한 분인데, 촬영한 사진들 중 그다지 맘에 안들게 찍힌 사진 입니다.
확실히 인물 사진은 80mm 이상 사용해야 좋군요.
레이싱모델 사진중 니콘 랜즈 80-200mm 로 찍은 사진과 비교해보세요~ ^^

[포토] 요즘 인물 사진 촬영을 위해 노혼노 이용해서 아웃포커싱 연습중

기타
사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Aperture priority | Spot | 1/3sec | F/2.8 | 0.00 EV | 50.0mm | Flash did not fire
사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Aperture priority | Spot | 1/3sec | F/2.8 | 0.00 EV | 50.0mm | Flash did not fire

바디 D70s에 랜즈 탐론 17-50 F2.8을 이용해서 50mm로 아웃 포커싱 사진을 만들고자 연습 중입니다.

노혼노를 적극 활용중...

두번쨰 사진은 사진 촬영중에도 계속 노혼노 고개가 까딱까딱 움직이는 상태(마치 사람이 움직이는 현상 적용)에 셔터 스피드가 나오지 않아서 흔들린 사진인데 마치 노혼노의 특성을 잘 살린것 같아 재미 있네요.

나른한 점심시간 옥상에서 촬영

기타
Body 니콘 D70s
촬영시간 : 2009년 10월 28일 12:30 ~ 12:50

점심 먹고 나른한 점심시간 그냥 옥상에서 이것 저것 찍어봤다.
아직은 카메라 다루는 실력이 초보라서 그냥 대충 찍는다.
뭔가를 랜즈속에 담는다는 것 자체가 재미 있는것 같다.

사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Not defined | Pattern | 1/800sec | F/13.0 | 0.00 EV | 50.0mm | Off Compulsory
주제 : 빌딩


센츄리 오피스텔을 아래에서 바라본 사진
왠지 빌딩 유리 벽을 위로 뛰어서 하늘로 치솟고 싶은 생각이 절로 들지 않나요? (만고 내생각)



사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Not defined | Pattern | 1/800sec | F/13.0 | 0.00 EV | 50.0mm | Off Compulsory
주제 : 바람

옥상에 있는 에어콘 실외기 부분 사진인데 펜은 멈춰 있지만 웬지 시원한 느낌 안드시나요?
실제로 가동되고 있다면 더운 바람이 나오겠죠 ^^;



사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Not defined | Pattern | 1/1250sec | F/8.0 | 0.00 EV | 50.0mm | Flash did not fire
주제 : 신발


한때는 누군가의 발이 되어준 신발 한컬레 지금은 에어콘 실외기 위에 1년이 넘도록 비바람 이겨내며 저 자리를 지키고 있는 저 신발을 보고 있으면 웬지 모를 쓸쓸함이 느껴 지는군요..



사용자 삽입 이미지NIKON CORPORATION | NIKON D70s | Not defined | Pattern | 1/1000sec | F/13.0 | 0.00 EV | 50.0mm | Off Compulsory
주제 : 빌딩사이 하늘


빌딩 옆에 보이는 하늘을 찍었는데 어라 웬점이 보이는군요!
우주선인가? ㅋㅋ 디카에 묻은 점이군요... 관리 부실!


제가 찍은 사진은 마음껏 퍼가셔도 됩니다.
대신 출처는 남겨 주세요!

찍은이 : 세이박스 http://www.saybox.co.kr