상세 컨텐츠

본문 제목

[안드로이드] 카메라(Camera) 사진(Image) 찍고 가져오기

안드로이드

by aries574 2021. 1. 12. 15:56

본문


2021/01/08 - [안드로이드] - [안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)

2021/01/09 - [안드로이드] - [안드로이드]바로가기메뉴(ContextMenu) 바탕화면 변경해보기

2021/01/10 - [안드로이드] - [안드로이드] 리스트(RecyclerView) 와 바로가기메뉴(ContextMenu)

2021/01/11 - [안드로이드] - [안드로이드] 동적 메뉴(ActionMode) 만들어 보기


이번 시간에는 안드로이드 카메라 API를 사용해서 사진을 찍고 이미지를 가져오는 간단한 예제를 알아보겠습니다.


1. 기능선언(manifests -> AndroidManifest.xml)

application 태그 위에 선언하면 됩니다.

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


2. 메인화면 구현(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
>

<Button
android:id="@+id/btn_picture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사진찍기"
android:layout_gravity="center_horizontal"
android:layout_marginTop="55dp"
/>

<ImageView
android:layout_width="250dp"
android:layout_height="250dp"
android:src="@mipmap/ic_launcher"
android:layout_gravity="center_horizontal"
android:layout_marginTop="55dp"
android:id="@+id/imageView"/>

</LinearLayout>


3. 메인코드 구현(MainActivity.java)


import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

private Button btn_picture;
private ImageView imageView;

private static final int REQUEST_IMAGE_CODE = 101;

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

imageView = findViewById(R.id.imageView);

btn_picture = findViewById(R.id.btn_picture);
btn_picture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
takePicture();
}
});
}

//사진찍기
public void takePicture(){

Intent imageTakeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

if(imageTakeIntent.resolveActivity(getPackageManager()) != null){
startActivityForResult(imageTakeIntent, REQUEST_IMAGE_CODE);
}
}

//결과값 가져오기
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == REQUEST_IMAGE_CODE && resultCode == RESULT_OK) {

Bundle extras = data.getExtras();

Bitmap imageBitmap = (Bitmap) extras.get("data");

imageView.setImageBitmap(imageBitmap);
}
}
}


4. 실행화면

2021/01/08 - [안드로이드] - [안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)

2021/01/09 - [안드로이드] - [안드로이드]바로가기메뉴(ContextMenu) 바탕화면 변경해보기

2021/01/10 - [안드로이드] - [안드로이드] 리스트(RecyclerView) 와 바로가기메뉴(ContextMenu)

2021/01/11 - [안드로이드] - [안드로이드] 동적 메뉴(ActionMode) 만들어 보기

반응형

관련글 더보기

댓글 영역