안드로이드 앱 개발에서 카메라 및 갤러리 연동 기능은 매우 소비자 친화적이며 많은 앱에서 필수적인 기능입니다. 본 강좌에서는 자바를 이용해 간단한 카메라 및 갤러리 연동 앱을 개발할 것입니다. 이 앱은 사용자가 사진을 찍거나 갤러리에서 이미지를 선택할 수 있는 기능을 제공합니다. 이제 이 앱을 만드는 데 필요한 단계별 과정을 살펴보겠습니다.
1. 환경 설정
안드로이드 스튜디오를 설치하고 새로운 프로젝트를 만듭니다. 프로젝트를 만들 때 “Empty Activity” 또는 “Basic Activity”를 선택합니다. 언어는 Java 선택을 하고 “Finish”를 클릭하여 프로젝트 생성을 완료합니다.
2. 필요한 권한 요청
카메라와 갤러리 기능을 실행하기 위해 필요한 권한을 AndroidManifest.xml 파일에 추가해야 합니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.camera_gallery">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<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>
3. UI 디자인
activity_main.xml 파일에서 간단한 사용자 인터페이스를 설계합니다. 두 개의 버튼과 이미지를 표시할 ImageView를 추가합니다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="카메라로 찍기"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"/>
<Button
android:id="@+id/button_gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="갤러리에서 선택하기"
android:layout_below="@id/button_camera"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"/>
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_below="@id/button_gallery"
android:layout_marginTop="20dp"
android:scaleType="centerCrop"/>
</RelativeLayout>
4. MainActivity.java 구현
이제 MainActivity.java 파일을 작성하여 버튼 클릭 이벤트에 따라 카메라 또는 갤러리 앱을 호출하도록 합니다. 우선 버튼의 클릭 리스너를 설정하고 각각의 기능을 구현합니다.
package com.example.camera_gallery;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final int CAMERA_REQUEST = 100;
private static final int GALLERY_REQUEST = 200;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
Button buttonCamera = findViewById(R.id.button_camera);
Button buttonGallery = findViewById(R.id.button_gallery);
buttonCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
buttonGallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, GALLERY_REQUEST);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == CAMERA_REQUEST) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageView.setImageBitmap(imageBitmap);
} else if (requestCode == GALLERY_REQUEST) {
Uri selectedImageUri = data.getData();
imageView.setImageURI(selectedImageUri);
}
}
}
}
5. 앱 실행 및 테스트
이제 모든 코드를 작성했으므로 앱을 실행하여 테스트합니다. 에뮬레이터나 실제 스마트폰에서 앱을 실행하면 “카메라로 찍기” 버튼을 눌러 카메라 앱이 열리고 사진을 찍어서 미리 보기 이미지로 설정할 수 있습니다. “갤러리에서 선택하기” 버튼을 눌러 갤러리 앱에서 이미지를 선택하고 미리 보기로 표시할 수 있습니다.
6. 결론
이 강좌에서는 자바를 활용해 카메라와 갤러리 앱을 연동하는 간단한 안드로이드 앱을 개발했습니다. 이러한 기능은 다양한 안드로이드 앱에서 사용할 수 있는 기초적인 기술이며, 이를 바탕으로 보다 복잡한 기능을 추가하여 개인의 필요에 맞는 앱을 개발할 수 있습니다. 안드로이드 개발을 계속 진행하면서 이러한 기초적인 내용을 확장해 나가시면 좋겠습니다.