반응형
안녕하세요, '소프트웨어 공장'입니다! 오늘은 안드로이드의 미디어 기능을 활용하는 방법을 간단한 예제를 통해 알아보겠습니다. 안드로이드에서는 사진이나 비디오 촬영, 갤러리에서 이미지 선택 등 다양한 미디어 기능을 손쉽게 구현할 수 있습니다. 이번 포스팅에서는 간단한 예제를 통해 카메라와 갤러리를 활용하여 이미지를 앱에 표시하는 방법을 소개하겠습니다.
목표
이 포스팅을 통해 여러분은 다음과 같은 내용을 배울 수 있습니다:
- 카메라를 이용하여 사진 촬영하기
- 갤러리에서 이미지를 선택하기
- 선택된 이미지를 ImageView에 표시하기
구현 내용
우리는 다음 기능들을 구현해볼 것입니다:
- 사용자가 버튼을 클릭하면 카메라를 열어 사진을 찍을 수 있도록 합니다.
- 또 다른 버튼을 클릭하면 갤러리를 열어 이미지를 선택할 수 있도록 합니다.
- 촬영한 사진이나 선택한 이미지를 앱 화면에 표시합니다.
준비 사항
먼저, 이 기능들을 구현하기 위해 필요한 권한을 매니페스트 파일에 추가해야 합니다. 카메라 사용과 갤러리 접근을 위해 다음과 같은 권한이 필요합니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mediademo">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.MediaDemo">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
레이아웃 작성
다음으로, 간단한 UI를 작성하겠습니다. 버튼 두 개와 이미지를 표시할 ImageView를 포함한 레이아웃입니다.
<!-- res/layout/activity_main.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Button
android:id="@+id/btn_take_photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Take Photo" />
<Button
android:id="@+id/btn_choose_from_gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Choose from Gallery" />
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="16dp"
android:scaleType="centerCrop" />
</LinearLayout>
Kotlin 코드 작성
이제 Kotlin으로 기능을 구현해보겠습니다. 카메라와 갤러리의 이미지를 불러와 ImageView에 표시하는 방법입니다.
// MainActivity.kt
package com.example.mediademo
import android.app.Activity
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import android.widget.Button
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var imageView: ImageView
private val REQUEST_IMAGE_CAPTURE = 1
private val REQUEST_IMAGE_PICK = 2
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnTakePhoto: Button = findViewById(R.id.btn_take_photo)
val btnChooseFromGallery: Button = findViewById(R.id.btn_choose_from_gallery)
imageView = findViewById(R.id.image_view)
btnTakePhoto.setOnClickListener {
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
if (takePictureIntent.resolveActivity(packageManager) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
}
}
btnChooseFromGallery.setOnClickListener {
val pickPhotoIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
startActivityForResult(pickPhotoIntent, REQUEST_IMAGE_PICK)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
REQUEST_IMAGE_CAPTURE -> {
val imageBitmap = data?.extras?.get("data") as Bitmap
imageView.setImageBitmap(imageBitmap)
}
REQUEST_IMAGE_PICK -> {
val selectedImageUri: Uri? = data?.data
selectedImageUri?.let {
imageView.setImageURI(it)
}
}
}
}
}
}
코드 설명
- 카메라를 이용하여 사진 촬영하기
btnTakePhoto
버튼을 클릭하면MediaStore.ACTION_IMAGE_CAPTURE
인텐트를 통해 기본 카메라 앱을 실행합니다.- 사진을 촬영하고 나면,
onActivityResult()
메소드에서 결과를 받아imageView
에 촬영한 이미지를 표시합니다.
- 갤러리에서 이미지 선택하기
btnChooseFromGallery
버튼을 클릭하면Intent.ACTION_PICK
을 통해 갤러리를 엽니다.- 사용자가 이미지를 선택하면, 선택한 이미지의 URI를
imageView
에 표시합니다.
- onActivityResult() 메소드
onActivityResult()
메소드는 다른 액티비티(카메라 앱이나 갤러리)에서 돌아올 때 호출됩니다. 여기서 요청 코드와 결과 코드를 확인하여 적절한 동작을 수행합니다.
결론
이 예제를 통해 간단하게 카메라와 갤러리의 이미지를 안드로이드 앱에서 활용하는 방법을 알아보았습니다. 안드로이드의 미디어 기능을 활용하여 사용자가 자신의 이미지를 추가할 수 있는 기능은 많은 앱에서 중요한 요소 중 하나입니다. 이 예제를 바탕으로 여러분의 프로젝트에 더욱 다양하고 창의적인 미디어 기능을 추가해 보세요!
반응형
'Android' 카테고리의 다른 글
Android - 애플리케이션 배포 준비하기 [AndroidManifest 설정 및 ProGuard 적용] (0) | 2024.11.29 |
---|---|
Android 앱 성능 최적화 전략 - 메모리 관리부터 ANR 문제 해결까지 (0) | 2024.11.28 |
Android - 비디오 및 오디오 재생 (0) | 2024.11.26 |
Android - 카메라와 갤러리 사용하기 (0) | 2024.11.25 |
Android - 런타임 권한(Permission) 요청과 처리 방법 (0) | 2024.11.24 |