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

* 직접 촬영 기능을 구현할땐, 카메라 미리보기를 위해서는 영상을 실시간으로 보여주기 위해서는 성능이 중요해서 하드웨어 가속 기능을 사용할 수 있는 서피스뷰(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>









블로그 이미지

세이박스

세이박스는 세상의 모든 이야기를 담는 소통박스 입니다.

댓글을 달아 주세요

사용자 삽입 이미지


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

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

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

세이박스

세이박스는 세상의 모든 이야기를 담는 소통박스 입니다.

댓글을 달아 주세요

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

요즘 17-50 테스트겸 이것저것 찍어 보고 있는데, 날씨가 화창해서 이전에 찍어봤던 센츄리빌딩을 다시 한번 찍어 봤습니다.

바디 : 니콘 D70s
랜즈 : 탐론 17-50 F2.8

아래 출처 페이지로 오셔서 사진 많이 구경하세요!

[출처] 세이박스 - http://www.saybox.co.kr/bbs/board.php?bo_table=selca&wr_id=27

블로그 이미지

세이박스

세이박스는 세상의 모든 이야기를 담는 소통박스 입니다.

댓글을 달아 주세요