카메라 인텐트

기기의 기본 카메라 애플리케이션을 사용하여 사진이나 동영상 촬영과 같은 기본적인 카메라 작업을 실행하기 위해 카메라 라이브러리와 통합하지 않아도 됩니다. 대신 Intent를 사용하세요.

카메라 앱으로 사진 촬영

Android는 Intent를 호출하여 다른 애플리케이션에 작업을 위임합니다. 이 절차는 세 부분을 포함하는데 이는 Intent 자체, 외부 Activity를 시작하는 호출, 포커스가 활동에 반환될 때 이미지 데이터를 처리하는 코드 일부입니다.

다음은 사진을 촬영하는 Intent를 호출하는 함수입니다.

Kotlin

val REQUEST_IMAGE_CAPTURE = 1
 
private fun dispatchTakePictureIntent() {
    val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
    } catch (e: ActivityNotFoundException) {
        // display error state to the user
    }
}

Java

static final int REQUEST_IMAGE_CAPTURE = 1;
 
private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    } catch (ActivityNotFoundException e) {
        // display error state to the user
    }
}

카메라 앱으로 동영상 녹화

Intent를 호출하여 동영상을 촬영할 수도 있습니다.

Kotlin

val REQUEST_VIDEO_CAPTURE = 1
 
private fun dispatchTakeVideoIntent() {
    Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
        takeVideoIntent.resolveActivity(packageManager)?.also {
            startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
        } ?: run {
          //display error state to the user
        }
    }
}

Java

static final int REQUEST_VIDEO_CAPTURE = 1;
 
private void dispatchTakeVideoIntent() {
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
    }
    else {
      //display error state to the user
    }
}

startActivityForResult() 메서드는 resolveActivity()를 호출하는 조건에 의해 보호되며 이 함수는 Intent를 처리할 수 있는 첫 번째 활동 구성요소를 반환합니다. 이를 실행하여 앱의 비정상 종료를 야기하지 않는 Intent를 호출하는지 확인합니다.

추가 리소스

기본 카메라 작업에는 Intent를 사용합니다. 그렇지 않은 경우 기본 이미지 또는 동영상 캡처보다 복잡한 작업에는 Camera2 및 CameraX 라이브러리를 사용하는 것이 좋습니다.