기기의 기본 카메라 애플리케이션을 사용하여 사진이나 동영상 촬영과 같은 기본적인 카메라 작업을 실행하기 위해 카메라 라이브러리와 통합하지 않아도 됩니다. 대신 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 } }
자바
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 } } }
자바
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 라이브러리를 사용하는 것이 좋습니다.