상세 컨텐츠

본문 제목

[안드로이드] 기본 카메라 사진 찍고 이미지뷰에 보여주는 방법(StartActivityForResult deprecated 해결방법)

안드로이드

by aries574 2022. 4. 18. 13:05

본문


이번 시간에는 기본 카메라 불러서 사진 찍고

이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다.

기존 startactivityforresult 말고 다른 방식으로 구현했습니다. 


목차

1. 실행 화면

2. 메인 화면 구성 activity_main.xml

3. 메인 코드 구현 MainActivity.java


1. 실행 화면

 

2. 메인 화면 구성 activity_main.xml

 - 설명 - 

 1. 버튼을 누르면 기본 카메라 앱이 실행됩니다.

 2. 사진을 찍고 확인을 누르면, 이미지 뷰에 사진이 보입니다. 

<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/mainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_launcher" />

    <Button
        android:id="@+id/pic_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="사진찍기"
        android:textSize="20sp" />
    
</RelativeLayout>

 

 

3. 메인 코드 구현 MainActivity.java

 - 설명 - 

1. 버튼을 누르면 onClick메서드 안의 기능이 실행됩니다. 

2. 기존 startactivityforresult 방식은 deprecated(사용 중단) 되었기

때문에 새로운 방식으로 구현했습니다. 

public class MainActivity extends AppCompatActivity {

    Bitmap bitmap;

    ImageView imageView;

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

        imageView = findViewById(R.id.imageView);

        Button picBtn = findViewById(R.id.pic_btn);
        picBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                activityResultPicture.launch(intent);
            }
        });

    }//onCreate

    ActivityResultLauncher<Intent> activityResultPicture = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {

                    //결과 OK , 데이터 null 아니면
                    if( result.getResultCode() == RESULT_OK && result.getData() != null){

                        Bundle extras = result.getData().getExtras();

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

                        imageView.setImageBitmap(bitmap);
                    }
                }
            });

}//MainActivity

2022.04.17 - [안드로이드] - [안드로이드] RelativeLayout 쉽게 사용하는 방법

 

[안드로이드] RelativeLayout 쉽게 사용하는 방법

이번 시간에는 RelativeLayout에 대하여 알아보겠습니다. LinearLayout이 뷰의 위치를 가로, 세로로 구성한다면 RelativeLayout은 상대방의 뷰에 따라 위치를 구성합니다. 직접 해보면 쉽게 사용할 수 있습

aries574.tistory.com

2022.04.16 - [안드로이드] - [안드로이드] LinearLayout 쉽게 사용하는 방법

 

[안드로이드] LinearLayout 쉽게 사용하는 방법

이번 시간에는 LinearLayout을 쉽게 사용하는 방법에 대하여 알아보겠습니다. LinearLayout은 화면의 내용들을 가로나 세로 형태로 배치해줍니다. 가로, 세로를 섞어서 사용할 수도 있습니다. 직접 만

aries574.tistory.com

2022.04.15 - [안드로이드] - [안드로이드] 클립보드(Clipboard) 텍스트 복사(Copy)&붙여 넣기(paste) 하는 방법

 

[안드로이드] 클립보드(Clipboard) 텍스트 복사(Copy)&붙여넣기(paste) 하는 방법

이번 시간에는 텍스트를 길게 누르면 복사를 해서 원하는 부분에 붙여 넣기 하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 3. 메인 코드 구현 MainActivity.java 1. 실

aries574.tistory.com

반응형

관련글 더보기

댓글 영역