상세 컨텐츠

본문 제목

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

안드로이드

by aries574 2022. 7. 20. 10:49

본문


이번 시간에는 기본 카메라 앱을 실행시켜 사진을 찍고, 이미지뷰(ImageView)에 보여주는 방법을 알아보겠습니다.


목차

1. 실행 화면
2. 메인 화면 구현 activity_main.xml
3. 메인 코드 구현 MainActivity.kt


1. 실행 화면


2. 메인 화면 구현 activity_main.xml

- 설명 -

1. 이미지 보여주는 ImageView

2. 카메라앱 실행하는 Button

<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.kt

- 설명 -

1. MediaStore.ACTION_IMAGE_CAPTURE

  기본 카메라앱 실행

2. ActivityResultLaunche

  액티비티 결과 가져오는 클래스

3. it.data!!.extras

  결과값

class MainActivity : AppCompatActivity(){

    lateinit var bitmap: Bitmap
    lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //객체 생성
        imageView = findViewById(R.id.imageView)
        val picBtn: Button = findViewById(R.id.pic_btn)

        //버튼 이벤트
        picBtn.setOnClickListener {
            //사진 촬영
            val intent: Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)

            activityResult.launch(intent)
        }
    }//onCreate

    //결과 가져오기
    private val activityResult: ActivityResultLauncher<Intent> = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()){

            if(it.resultCode == RESULT_OK && it.data != null){
                //값 담기
                val extras = it.data!!.extras

                //bitmap으로 타입 변경
                bitmap = extras?.get("data") as Bitmap

                //화면에 보여주기
                imageView.setImageBitmap(bitmap)
            }
        }
}

2022.07.19 - [안드로이드] - [안드로이드 코틀린] 텍스트(EditText) 입력 체크 및 버튼(Button) 활성화

 

[안드로이드 코틀린] 텍스트(EditText) 입력 체크 및 버튼(Button) 활성화

이번 시간에는 문자를 입력하는 EditText에 값의 유무에 따라 버튼이 활성화/비활성화되는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_main.xml 3. 메인 코드 구현 MainA

aries574.tistory.com

2022.07.18 - [안드로이드] - [안드로이드 코틀린] 포커스 이벤트 숫자(천 단위) 콤마 넣는 방법

 

[안드로이드 코틀린] 포커스 이벤트 숫자(천 단위) 콤마 넣는 방법

이번 시간에는 OnFocusChangeListener을 사용해서 EditText에 숫자를 입력하면 포커스 상태에 따라 콤마 표시를 해주는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_mai

aries574.tistory.com

2022.07.17 - [안드로이드] - [안드로이드 코틀린] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기

 

[안드로이드 코틀린] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기

이번 시간에는 onClick 이벤트가 여러 개 있을 때 한 곳에서 쉽게 관리할 수 있는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구현 activity_main.xml 3. 메인 코드 구현 MainActivity.kt..

aries574.tistory.com

반응형

관련글 더보기

댓글 영역