728x90
반응형
SMALL

# 안드로이드 소스로 사진 촬영 후 이미지 URI 확인하기


안드로이드 앱에서 사진을 촬영하고, 촬영한 이미지의 URI를 확인하는 방법에 대해 알아보겠습니다. 이 과정은 카메라 앱을 호출하고, 결과를 받아오는 방식으로 진행됩니다. 아래의 예제 코드를 통해 단계별로 설명하겠습니다.


## 1. 필요한 권한 요청하기


먼저, 카메라와 외부 저장소에 접근하기 위한 권한을 요청해야 합니다. `AndroidManifest.xml` 파일에 다음과 같은 권한을 추가합니다.


```xml
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
```


## 2. 카메라 인텐트 호출하기


이제 카메라를 호출하여 사진을 촬영할 수 있도록 인텐트를 설정합니다. 아래는 Activity에서 카메라를 호출하는 코드입니다.


```java
public class MainActivity extends AppCompatActivity {
    private static final int REQUEST_IMAGE_CAPTURE = 1;
    private Uri photoURI;


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


        // 사진 촬영 버튼 클릭 리스너
        Button takePictureButton = findViewById(R.id.takePictureButton);
        takePictureButton.setOnClickListener(v -> dispatchTakePictureIntent());
    }


    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // 이미지 저장을 위한 파일 생성
            File photoFile = createImageFile();
            if (photoFile != null) {
                photoURI = FileProvider.getUriForFile(this,
                        "com.example.android.fileprovider",
                        photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
            }
        }
    }


    private File createImageFile() {
        // 이미지 파일 이름 생성 및 저장 경로 설정
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = null;
        try {
            image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;
    }
}
```


## 3. 결과 받기


사진 촬영 후 결과를 처리하기 위해 `onActivityResult` 메서드를 오버라이드합니다. 이 메서드에서 촬영한 이미지를 확인할 수 있습니다.


```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        // 촬영한 이미지의 URI
        Log.d("MainActivity", "Photo URI: " + photoURI.toString());
        // 이미지 표시하기 (예: ImageView에 설정)
        // imageView.setImageURI(photoURI);
    }
}
```


## 4. FileProvider 설정


`FileProvider`를 사용하기 위해 `AndroidManifest.xml`에 다음과 같은 내용을 추가합니다.


```xml
<application>
    ...
    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.example.android.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>
</application>
```


그리고 `res/xml/file_paths.xml` 파일을 생성하여 다음과 같이 설정합니다.


```xml
<paths>
    <external-files-path name="my_images" path="Pictures/"/>
</paths>
```


## 결론


이제 안드로이드 앱에서 사진을 촬영하고, 촬영한 이미지의 URI를 확인할 수 있는 기능을 구현했습니다. 위 코드를 참고하여 여러분의 앱에 맞게 수정하고 활용해 보세요. 사진 촬영 기능은 사용자 경험을 크게 향상시킬 수 있는 중요한 요소입니다.

해당 게시물은 AI자동 글쓰기로 제작되었습니다

728x90
반응형
LIST

+ Recent posts