안드로이드

 

class MainActivity

package kr.co.braverokmc.mycaptureintent;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.hardware.Camera;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;

import java.io.File;

public class MainActivity extends AppCompatActivity {

    ImageView imageView;

/*
    1. 인텐트를 이용해서 단말의 사진을 띄워주는 방법

    버튼을 클릭하면 -> 단말의 카메라앱을 띄워주고


    -> 사진찍은 결과물을 이미지뷰에 보여주기


    2. 서피스 뷰를 이용해서 보여주는 방법

    */

    File outputPath;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView=(ImageView)findViewById(R.id.imageView);

/*
        container =(FrameLayout)findViewById(R.id.container);
        CameraSurfaceView cameraView =new CameraSurfaceView(this);
        container.addView(cameraView);*/


        // 디렉토리 를 파일로 받기
        File storageDir=Environment.getExternalStorageDirectory();
        outputPath =new File(storageDir, "output.jpg");



    }


    public void onClick(View v){
        //카메라 띄우기
        Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        //부과 설정 사진을 찍으면 그 결과를 어디에 저장할 것인가 설정
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outputPath));
        // 세로 방향으로 변경
        intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);

        // 응답코드 설정
        startActivityForResult(intent, 1001);

    }

    //결과를 받는다.
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //사진을 찍으면 반환 코드로 1001 받으면
        if(requestCode==1001){
            //옵션 객체 생성
            BitmapFactory.Options options=new BitmapFactory.Options();
            // 크기를 1/8 로 줄이기
            options.inSampleSize=8;

            Bitmap  bitmap =BitmapFactory.decodeFile(outputPath.getAbsolutePath(), options);
            imageView.setImageBitmap(bitmap);
        }


    }





}









 

R.layout.activity_main


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="kr.co.braverokmc.mycaptureintent.MainActivity">

    <Button
        android:text="사진찍기"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/button"
        android:onClick="onClick"
        />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:id="@+id/imageView"
        android:background="@android:color/holo_blue_light"
        android:layout_below="@+id/button"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


</RelativeLayout>

 

 

 

 

권한 설정

AndroidMainfest.xml

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-feature android:name="android.hardware.camera"
                android:required="true" />

 

 

 

 

 

 

android

 

about author

PHRASE

Level 60  머나먼나라

우리 자신보다 더 어리석은 사람을 만나는 것은 매우 즐거운 일이다. 왜냐하면 우리들은 그런 사람을 만나는 즉시 호감이 생기기 때문이다. -제롬 K. 제롬

댓글 ( 4)

댓글 남기기

작성