CameraX

CameraX가 Jetpack에 추가되어 앱에 카메라 기능을 더 쉽게 추가할 수 있습니다. 라이브러리는 다양한 호환성 수정사항과 해결 방법을 제공하여 많은 기기에서 개발자 환경을 일관되게 유지하는 데 도움이 됩니다.

이 표에는 androidx.camera 그룹의 모든 아티팩트가 나열됩니다.

아티팩트 안정화 버전 출시 후보 버전 베타 버전 알파 버전
camera-camera2 1.4.1 - - 1.5.0-alpha04
camera-core 1.4.1 - - 1.5.0-alpha04
camera-compose - - - 1.5.0-alpha04
camera-effects 1.4.1 - - 1.5.0-alpha04
camera-extensions 1.4.1 - - 1.5.0-alpha04
camera-feature-combination-query - - - 1.5.0-alpha04
camera-feature-combination-query-play-services - - - 1.5.0-alpha04
camera-lifecycle 1.4.1 - - 1.5.0-alpha04
camera-mlkit-vision 1.4.1 - - 1.5.0-alpha04
camera-view 1.4.1 - - 1.5.0-alpha04
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.4.1 - - 1.5.0-alpha04
이 라이브러리는 2024년 12월 11일에 최종 업데이트되었습니다.

기기 테스트

CameraX는 Google 실험실의 여러 기기에서 테스트됩니다. 현재 실험실에 있는 기기 목록을 보려면 CameraX 실험실 테스트 기기를 참고하세요.

종속 항목 선언

CameraX의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.5.0-alpha03"
  // The following line is optional, as the core library is included indirectly by camera-camera2
  implementation "androidx.camera:camera-core:${camerax_version}"
  implementation "androidx.camera:camera-camera2:${camerax_version}"
  // If you want to additionally use the CameraX Lifecycle library
  implementation "androidx.camera:camera-lifecycle:${camerax_version}"
  // If you want to additionally use the CameraX VideoCapture library
  implementation "androidx.camera:camera-video:${camerax_version}"
  // If you want to additionally use the CameraX View class
  implementation "androidx.camera:camera-view:${camerax_version}"
  // If you want to additionally add CameraX ML Kit Vision Integration
  implementation "androidx.camera:camera-mlkit-vision:${camerax_version}"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:${camerax_version}"
}

Kotlin

dependencies {
    // CameraX core library using the camera2 implementation
    val camerax_version = "1.5.0-alpha03"
    // The following line is optional, as the core library is included indirectly by camera-camera2
    implementation("androidx.camera:camera-core:${camerax_version}")
    implementation("androidx.camera:camera-camera2:${camerax_version}")
    // If you want to additionally use the CameraX Lifecycle library
    implementation("androidx.camera:camera-lifecycle:${camerax_version}")
    // If you want to additionally use the CameraX VideoCapture library
    implementation("androidx.camera:camera-video:${camerax_version}")
    // If you want to additionally use the CameraX View class
    implementation("androidx.camera:camera-view:${camerax_version}")
    // If you want to additionally add CameraX ML Kit Vision Integration
    implementation("androidx.camera:camera-mlkit-vision:${camerax_version}")
    // If you want to additionally use the CameraX Extensions library
    implementation("androidx.camera:camera-extensions:${camerax_version}")
}

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

Camera Viewfinder Compose 버전 1.0

버전 1.0.0-alpha02

2024년 6월 12일

androidx.camera:camera-viewfinder-compose:1.0.0-alpha02이 출시되었습니다. 버전 1.0.0-alpha02에는 이 커밋이 포함되어 있습니다.

버전 1.0.0-alpha01

2024년 5월 14일

androidx.camera:camera-viewfinder-compose:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • 새 라이브러리 이 라이브러리는 CameraX 및 Camera2와 함께 사용할 수 있는 Compose 네이티브 뷰파인더 컴포저블을 도입합니다. 컴포저블 뷰파인더는 다양한 가로세로 비율과 터치 이벤트 처리를 지원합니다.

카메라 뷰파인더 버전 1.4

버전 1.4.0-alpha07

2024년 6월 12일

androidx.camera:camera-viewfinder:1.4.0-alpha07androidx.camera:camera-viewfinder-core:1.4.0-alpha07이 출시되었습니다. 버전 1.4.0-alpha07에는 이 커밋이 포함되어 있습니다.

버전 1.4.0-alpha06

2024년 5월 14일

androidx.camera:camera-viewfinder:1.4.0-alpha06androidx.camera:camera-viewfinder-core:1.4.0-alpha06이 출시되었습니다. 버전 1.4.0-alpha06에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • 기본 구현을 더 잘 반영하도록 ViewfinderImplementationMode enum 이름을 바꾸고 TransformationInfo.sourceRotation의 고정 상수를 추가합니다. (Ic6149)
  • 확대/축소 동작의 상태를 캡슐화하는 ZoomGestureDetector.ZoomEvent를 추가했습니다. (I84cdf)

카메라 버전 1.5

버전 1.5.0-alpha04

2024년 12월 11일

androidx.camera:camera-*:1.5.0-alpha04이 출시되었습니다. 버전 1.5.0-alpha04에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • ImageCapture.Builder#setOutputFormatImageCaptureCapabilities#getSupportedOutputFormats를 안정적인 API로 노출했습니다. (Ieb04a)
  • VideoCapture가 수명 주기에 바인딩될 때 해상도 정보를 가져오도록 VideoCapture.getResolutionInfo()를 추가합니다. (Icb478)
  • PreviewView.getScreenFlashPreviewView.setScreenFlashOverlayColor를 안정화 API로 노출했습니다. (I74fee)

버그 수정

  • 어두운 곳에서 플래시를 켜고 사진을 찍을 때 Vivo 1610 기기에서 캡처 실패 문제가 수정되었습니다. (I366f4)
  • Redmi Note 6 Pro에서 이미지를 캡처한 후 플래시가 예기치 않게 꺼지는 문제를 수정했습니다. (I2e0e8, b/377144569)
  • 카메라가 근처 물체에 초점을 맞추기 전에는 확장 프로그램의 야간 모드에서 정지 이미지를 캡처하지 못하는 Pixel Android 15 기기의 문제를 수정했습니다. (I228d4)
  • 확장 프로그램이 사용 설정되어 있고 VideoCapture가 함께 바인딩된 경우 정적 이미지 캡처 오작동 문제가 수정되었습니다. (I5c745)
  • 기기에서 지원하는 경우 확장 프로그램에 UltraHDR 스틸 이미지 캡처 지원을 사용 설정했습니다. (I48300)
  • TCL 기기에서 CameraEffect를 사용하여 이미지 캡처를 타겟팅하는 플래시 캡처의 플래시 타이밍 문제를 수정했습니다. (I7698c)

버전 1.5.0-alpha03

2024년 10월 30일

androidx.camera:camera-*:1.5.0-alpha03이 출시되었습니다. 버전 1.5.0-alpha03에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • RAW 및 RAW + JPEG ImageCapture용 출력 형식 API를 추가합니다. 기기 기능 확인은 ImageCaptureCapabilities#getSupportedOutputFormats에 노출됩니다. OUTPUT_FORMAT_RAW는 Adobe DNG 형식의 RAW 이미지를 캡처하고 OUTPUT_FORMAT_RAW_JPEG는 RAW 및 JPEG 이미지를 동시에 캡처합니다. 새로운 ImageCapture#takePicture API는 동시 이미지 캡처에 사용되며 두 개의 OutputFileOptions를 제공해야 합니다. 첫 번째는 RAW 이미지용, 두 번째는 JPEG 이미지용입니다. (Ib0f3d)

버그 수정

  • VideoCapture가 사용 설정된 경우 TCL 기기에서 미리보기 및 동영상이 과소 노출되는 문제를 수정했습니다. (Id7a64)
  • 효과가 사용 설정되어 있거나 4개의 사용 사례가 연결된 경우 (스트림 공유) PreviewView.getMeteringPointFactory를 사용하여 startFocusMetering를 호출해도 올바른 센서 좌표가 가져오지 않는 문제를 수정했습니다. (I916c5, b/345993685)
  • 동영상을 녹화할 때 사용 가능한 저장공간이 부족하여 VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE 이벤트가 트리거되지 않는 문제를 수정했습니다. (I35779, b/356399842)

버전 1.5.0-alpha02

2024년 10월 2일

androidx.camera:camera-*:1.5.0-alpha02이 출시되었습니다. 버전 1.5.0-alpha02에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • 기기에서 지원하는 카메라 기능을 쿼리하는 새로운 API입니다. 예를 들어 HDR과 60FPS를 동시에 사용 설정할 수 있는지 확인합니다. 여기에는 camera-feature-combination-query 및 camera-feature-combination-query-play-services라는 두 가지 아티팩트가 포함됩니다. 이는 Google Play 서비스에서 제공하는 추가 데이터가 포함된 camera2의 CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported API와 호환되는 버전입니다.

버그 수정

  • LEGACY 수준 기기에서 Preview/VideoCapture 타겟 프레임 속도 문제를 수정했습니다. setTargetFrameRate 또는 Camera2Interop API를 통해 설정된 타겟 프레임 속도는 항상 AeFpsRangeLegacyQuirk에서 제공한 값으로 덮어썼습니다. 이 수정사항을 적용하면 CameraX 라이브러리는 setTargetFrameRate 또는 Camera2Interop API를 통해 설정된 값을 따릅니다. (Ie2d32)
  • CameraEffect를 사용한 이미지 캡처를 위한 플래시/토치/3A 기능을 추가했습니다. 이제 CameraEffect를 사용한 이미지 캡처는 CameraEffect가 없는 이미지 캡처와 동일한 캡처 전 처리 및 캡처 후 처리 (예: 플래시 트리거, 3A 수렴 등 해당하는 경우)를 가져야 합니다. (I5ff30)
  • 삼성 SM-A057G 기기에서 ImageAnalysis의 문제가 있는 출력 크기를 제외했습니다. ImageAnalysis에서 1920x1440 이상 해상도를 사용하면 검은색 미리보기 문제가 발생합니다. 이 문제를 방지하기 위해 SM-A057G 기기에 ExcludedSupportedSizesQuirk를 적용했습니다. (I63dfe, b/365877975)
  • 스트림 공유 메커니즘이 내부적으로 사용 설정되어 PreviewVideoCapture에 스트림을 공유할 때 발생하는 Preview/VideoCapture 타겟 프레임 속도 문제가 해결되었습니다. (I4fdac)
  • Samsung S10e 및 S10+ 기기에서 잘못된 JPEG 이미지 메타데이터 문제를 해결하는 해결 방법을 사용 설정했습니다. 수정사항을 적용하면 잘못된 JPEG 이미지 메타데이터 문제가 발생한 경우 CameraX에서 JPEG 이미지를 성공적으로 저장하거나 이러한 기기에서 ImageProxy.toBitmap() 함수를 호출할 때 올바른 Bitmap 객체를 반환할 수 있습니다. (Iae493, b/356428987)
  • HDR 이미지를 캡처할 때 네이티브 비정상 종료가 발생할 수 있고 BOKEH 또는 FACE_RETOUCH 모드에서 캡처 세션을 구성하는 데 실패할 수 있으므로 ID가 0인 삼성 A52s 후면 카메라의 확장 프로그램이 사용 중지되었습니다. (I03ec9, b/364152642)
  • 동영상을 녹화할 때 사용 가능한 저장공간이 부족하여 VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE 이벤트가 트리거되지 않는 문제를 수정했습니다. (Ia5b4f, b/356399842)
  • Oppo A5 (CPH1931)에서 두 번째 동영상 녹화 시도가 실패하는 문제가 해결되었습니다. (I181d6)

버전 1.5.0-alpha01

2024년 9월 4일

androidx.camera:camera-*:1.5.0-alpha01이 출시되었습니다. 버전 1.5.0-alpha01에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • 듀얼 동시 카메라 동영상 캡처의 구성 설정을 설정하는 API를 제공합니다. 설정에는 혼합을 위한 알파 값, x, y 좌표의 오프셋, 카메라 프레임 디스플레이 창의 너비와 높이의 크기가 포함됩니다. 오프셋, 너비, 높이는 정규화된 기기 좌표로 지정됩니다. (Ia2b8a)
  • CameraProvider.getCameraInfo를 공식 API로 노출했습니다. (I901cd)
  • 초기 음소거 상태를 제어하는 API PendingRecording.withAudioEnabled(boolean initialMuted)를 추가했습니다. (I635c3, b/354829267)

버그 수정

  • 삭제된 LifecycleOwnerbindToLifecycle가 호출될 때 발생하는 비정상 종료 문제를 수정했습니다. (I6e6d8)
  • Motorola Edge 20 Fusion에서 VideoCapture와 결합하는 동안 전면 카메라의 미리보기가 검은색 화면으로 표시되는 문제를 수정했습니다. (I1fe88)
  • 부드러움을 개선하기 위해 PreviewView에서 확대/축소 동작 감지를 위한 구성을 최적화했습니다. (I04ffc)

카메라 버전 1.4

버전 1.4.1

2024년 12월 11일

androidx.camera:camera-*:1.4.1이 출시되었습니다. 버전 1.4.1에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 카메라가 근처 물체에 초점을 맞추기 전에는 확장 프로그램의 야간 모드에서 정지 이미지를 캡처하지 못하는 Pixel Android 15 기기의 문제를 수정했습니다. (I228d4)
  • 확장 프로그램이 사용 설정되어 있고 VideoCapture가 함께 바인딩된 경우 발생하는 ImageCapture#takePicture 오작동 문제가 수정되었습니다. (I5c745)

버전 1.4.0

2024년 10월 30일

androidx.camera:camera-*:1.4.0이 출시되었습니다. 버전 1.4.0에는 이 커밋이 포함되어 있습니다.

1.3.0 이후 중요 변경사항

CameraX 1.4.0에는 흥미로운 업데이트가 포함되어 있습니다. 요약 내용:

주요 기능: 10비트 HDR:

  • 멋진 HDR 사진과 동영상을 간편하게 촬영하세요.
  • HLG 및 10비트 HEVC 인코딩을 지원합니다.
  • 10비트 HDR 미리보기를 사용하고 기기 기능을 쿼리하세요.
  • 점점 더 많은 기기에서 UltraHDR 이미지와 HDR 동영상을 지원합니다.

기타 멋진 기능:

  • Kotlin 확장 프로그램: takePictureawaitInstance 정지 함수를 추가했습니다.
  • 실시간 효과: 워터마크, 객체 강조 표시와 같은 효과를 적용합니다.
  • CameraController API: 동영상 캡처 구성을 위한 새로운 컨트롤입니다.
  • 미리보기 손떨림 보정: 기기 기능을 쿼리하고 손떨림 보정을 사용 설정합니다.
  • VideoCapture 개선사항: 품질을 더 세부적으로 제어하고 더 높은 해상도에 액세스할 수 있습니다.
  • CameraX 확장 프로그램 통합: VideoCapture 및 새로운 ImageCapture 기능과 원활하게 통합할 수 있습니다.
  • 셔터 소리 API: 지역별 셔터 소리 요구사항을 쉽게 확인할 수 있습니다.
  • 화면 플래시: 전면 카메라의 저조도 사진을 개선했습니다.
  • Camera Extensions Metadata API: 확장 프로그램 강도를 조정하고 ExtensionMode#AUTO에서 현재 확장 프로그램 모드에 관한 알림을 수신하는 API를 지원합니다. 베타RC 공지사항에서 더 많은 버그 수정사항을 확인할 수 있습니다.

버전 1.4.0-rc04

2024년 10월 16일

androidx.camera:camera-*:1.4.0-rc04이 출시되었습니다. 버전 1.4.0-rc04에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 효과가 사용 설정되어 있거나 4개의 사용 사례가 연결된 경우 (스트림 공유) PreviewView.getMeteringPointFactory를 사용하여 startFocusMetering를 호출해도 올바른 센서 좌표가 가져오지 않는 문제를 수정했습니다. (I916c5, b/345993685)

버전 1.4.0-rc03

2024년 10월 2일

androidx.camera:camera-*:1.4.0-rc03이 출시되었습니다. 버전 1.4.0-rc03에는 이 커밋이 포함되어 있습니다.

버그 수정

  • CameraEffect를 사용한 이미지 캡처를 위한 플래시/토치/3A 기능을 추가했습니다. 이제 CameraEffect를 사용한 이미지 캡처에는 CameraEffect가 없는 이미지 캡처와 동일한 캡처 전 처리 및 캡처 후 처리 (예: 플래시 트리거, 3A 수렴 등 해당하는 경우)가 적용됩니다. (I5ff30)
  • PreviewView에서 손가락을 모아서 확대/축소할 때의 부드러움을 최적화했습니다. (I04ffc)
  • 울트라 HDR 지원에 더 이상 기기에 10비트 출력 기능이 필요하지 않으므로 울트라 HDR을 10비트 출력 기능에서 분리합니다. (I96ff2, I0c3b3)

버전 1.4.0-rc02

2024년 9월 18일

androidx.camera:camera-*:1.4.0-rc02이 출시되었습니다. 버전 1.4.0-rc02에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 삭제된 LifecycleOwnerbindToLifecycle가 호출될 때 발생하는 비정상 종료 문제를 수정했습니다. (I6e6d8)
  • ScreenFlash#applyScreenFlashView에 공개 상태 애니메이션을 추가했습니다. 이로 인해 밝기 변경이 시간이 지나면 비동기식으로 완료되어 발생하는 버그도 수정되었습니다. (I37cdb)
  • 지원되는 기기의 프레임워크에서 확대/축소 설정을 재정의하여 확대/축소의 부드러움이 개선되었습니다.

버전 1.4.0-rc01

2024년 8월 7일

androidx.camera:camera-*:1.4.0-rc01이 출시되었습니다. 버전 1.4.0-rc01에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • 사용 사례를 카메라에 바인딩하지 않고도 특정 카메라 정보를 제공하는 실험용 CameraInfo.getCameraInfo를 추가했습니다. (I550d1)

API 변경사항

  • ScreenFlashView가 명시적으로 추가되지 않은 경우에 관한 PreviewView.getScreenFlashPreviewView.setScreenFlashOverlayColor API를 추가했습니다. (I43945)

버그 수정

  • VideoCapture 사용 사례가 바인딩된 어두운 조명에서 플래시를 사용 설정하여 캡처한 이미지의 노출 및 색조 문제가 해결되었습니다. (Ic9814)
  • 확장 프로그램이 사용 설정된 takePicture 요청을 중단하면 결과를 가져오지 못하고 다음 takePicture 요청이 더 이상 작동하지 않을 수 있는 문제를 수정했습니다. (Iae78f)
  • 확장 프로그램이 사용 설정될 때 발생하는 메모리 누수 문제가 수정되었습니다. (Iab276)
  • Pixel 7/8 및 삼성 갤럭시 S24 시리즈와 같은 기기에서 발생하는 CameraX 확장 프로그램 오작동을 해결했습니다. 이 문제는 출시 모드의 Camera2OutputConfigImpl 변환 문제에서 비롯되었으며 AGP를 8.5.1로 업그레이드하고 축소를 사용 설정한 후에 발생했습니다. (I99598, b/354824993)

버전 1.4.0-beta02

2024년 6월 12일

androidx.camera:camera-*:1.4.0-beta02이 출시되었습니다. 버전 1.4.0-beta02에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • VideoCapture와 마찬가지로 미리보기 사용 사례에 setMirrorMode를 추가합니다. API 33 이상에서 OutputConfiguration.setMirrorMode를 통해 미리보기 스트림의 미러 모드 켜기/끄기를 지원합니다. 이전 API의 경우 아무 작업도 하지 않습니다. (I821f4)

버그 수정

  • ImageCapturePreview + VideoCapture + ImageCapture UseCase 조합에서 1920x1080을 선택하면 삼성 Tab A8에서 앱이 사진을 찍을 수 없는 문제를 수정했습니다. (I5a463, b/336925549)
  • 카메라를 전환한 후 녹화를 계속할 수 없는 지속적인 녹화 문제가 수정되었습니다. (Icb0a1)

버전 1.4.0-beta01

2024년 5월 14일

androidx.camera:camera-*:1.4.0-beta01이 출시되었습니다. 버전 1.4.0-beta01에는 이 커밋이 포함되어 있습니다.

API 변경사항

  • 확대/축소 동작의 상태를 캡슐화하는 ZoomGestureDetector.ZoomEvent를 추가했습니다. (I84cdf)

버그 수정

  • 캡처 및 탭 투 포커스가 반복 요청 FPS/안정화 모드 값을 사용하지 않아 캡처 세션이 다시 생성되고 일부 기기에서 지연 시간 문제 또는 미리보기 화면이 멈추는 버그가 수정되었습니다. (I7dc0b)
  • 일부 기기에서 CameraEffect가 사용 설정되어 있을 때 고해상도를 선택할 수 없는 버그가 수정되었습니다. (예: 삼성 A32 5G의 경우 4000x3000) (Ie3ed3, b/337336152)
  • Pixel 4XL API29에서 Preview로 사진을 찍을 때 ImageCaptureVideoCapture(UHD)가 바인딩된 경우 발생하는 비정상 종료 문제를 수정했습니다. (I5b288)
  • 가상 기기 지원: ProcessCameraProvider에 전달된 컨텍스트는 가상 기기 환경에서 기능을 보장하기 위해 기기 ID를 보존합니다. (I5ba48)

버전 1.4.0-alpha05

2024년 4월 17일

androidx.camera:camera-*:1.4.0-alpha05이 출시되었습니다. 버전 1.4.0-alpha05에는 이 커밋이 포함되어 있습니다.

새로운 기능

  • ProcessCameraProvider를 Kotlin 구현으로 변환했습니다. (I46d4f)
  • Kotlin 관용적인 방식으로 호출할 수 있도록 ImageCapture.takePicture 정지 함수를 추가했습니다. (I920be)

API 변경사항

  • ImageCapture에 출력 형식 API를 추가하고 기기 기능을 쿼리하기 위해 ImageCaptureCapabilitiesgetSupportedOutputFormats 메서드를 추가합니다. 기본 출력 형식 값은 OUTPUT_FORMAT_JPEG이며, 이 값은 SDR 이미지를 JPEG 형식으로 캡처합니다. 기기가 울트라 HDR을 지원하고 출력 형식이 OUTPUT_FORMAT_JPEG_ULTRA_HDR로 설정된 경우 CameraX는 JPEG/R 이미지 형식을 사용하여 울트라 HDR 압축 이미지를 캡처합니다. 이 형식은 SDR JPEG 형식과 하위 호환되며 콘텐츠의 HDR 렌더링을 지원합니다. 즉, 이전 앱이나 기기에서는 이미지가 일반 JPEG로 원활하게 표시됩니다. 형식을 완전히 지원하도록 업데이트된 앱과 기기에서는 이미지가 HDR로 표시됩니다. (I5de50)
  • CameraInfoPhysicalCameraInfo를 추가하여 실제 카메라 정보를 쿼리하고 CameraSelector에 실제 카메라 ID setter/getter를 추가합니다. (Ic5b90)
  • CameraController#COORDINATE_SYSTEM_VIEW_REFERENCEDImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED로 대체했습니다. 상수 값은 동일하게 유지됩니다. 이는 모든 상수를 한곳에 통합하기 위한 것입니다. (I890bb)
  • 새로운 RetryPolicy API를 사용하면 개발자가 CameraX 초기화를 위한 재시도 동작을 맞춤설정할 수 있습니다. (I36dd2)
  • 테스트 가능성을 지원하는 ImageCaptureLatencyEstimate 객체 생성을 사용 설정합니다. (Iaba99)
  • ImageAnalysis#COORDINATE_SYSTEM_SENSOR를 추가합니다. 이 옵션을 사용하면 MlKitAnalyzer가 카메라 센서 좌표계의 좌표를 반환합니다. (I3ec61)
  • 확장 프로그램 메타데이터 API를 노출했습니다. 새로운 CameraExtensionsInfoCameraExtensionsControl 인터페이스를 사용하면 애플리케이션이 확장 프로그램 강도 설정을 모니터링하고 조정할 수 있습니다. 애플리케이션은 새로 추가된 ExtensionsManager#getCameraExtensionsInfo() 또는 ExtensionsManager#getCameraExtensionsControl() 메서드를 통해 CameraExtensionsInfo 또는 CameraExtensionsControl 인스턴스를 가져올 수 있습니다. (I28e1a)
  • ProcessCameraProvider.getInstance의 일시중지 버전인 ProcessCameraProvider.awaitInstance를 추가했습니다. (Ib22b9)
  • PreviewView#getSensorToViewTransform() API를 추가합니다. 행렬은 카메라 센서 좌표에서 PreviewView의 좌표로의 변환을 나타냅니다. 이를 사용하여 한 UseCase에서 다른 UseCase로 좌표를 변환할 수 있습니다. 예를 들어 ImageAnalysis에서 감지된 객체의 좌표를 PreviewView 오버레이로 변환합니다. (I947ab)
  • camera-viewfinder-core API가 camera-viewfindercamera-viewfinder-compose에서 사용할 수 있도록 더 제네릭으로 만듭니다. (I1e295)
  • ViewfinderSurfaceRequestgetSurface 함수를 추가합니다. (I781a0)
  • camera-viewfinder에서 camera-viewfinder-core를 사용하고 ViewfinderSurfaceRequestCameraViewfinder를 지원 중단합니다. (I6198c)
  • 핀치 투 줌 활동에 맞게 구성된 크기 조절 동작을 해석하는 ZoomGestureDetector를 추가했습니다. (Ifafbf)

버그 수정

  • 분석기 기본 타겟 해상도 설정과 관련된 ImageAnalysis의 해상도 선택 문제가 수정되었습니다. 애플리케이션에서 다른 분석기 기본 해상도 설정을 설정했더라도 타겟 해상도가 640x480으로 잘못 유지되었습니다. 애플리케이션에 이 문제가 발생 (1.3.0~1.3.2)하고 솔루션이 포함된 최신 버전 출시를 사용하도록 업그레이드할 수 없는 경우, 원하는 해상도로 ResolutionSelector를 직접 설정하고 일치하는 AspectRatioStrategyImageAnalysis UseCase에 설정하면 이 문제를 해결할 수 있습니다. (I81f72, b/330091012)
  • 현재 요청이 실패하면 대기열에 추가된 takePicture 요청이 실행되지 않을 수 있는 문제를 수정했습니다. (Ie0801)
  • 잘못된 JPEG 데이터 검사를 Vivo X60 및 X60 Pro 기기에 적용합니다. 이렇게 하면 이러한 기기에서 비정상적으로 큰 이미지 문제가 해결될 수 있습니다. (I82247, b/288828159)
  • Samsung A24 기기에서 잘못된 JPEG 이미지 메타데이터 문제가 수정되었습니다. 수정사항을 적용하면 CameraX가 JPEG 이미지를 성공적으로 저장하거나 삼성 A24 기기에서 ImageProxy.toBitmap() 함수를 호출할 때 올바른 Bitmap 객체를 반환할 수 있습니다. (I8d6eb, b/309005680)
  • 캡처된 이미지가 10MB를 초과하는 경우 모든 삼성 기기에 잘못된 JPEG 데이터 검사를 적용합니다. 이렇게 하면 삼성 기기에서 비정상적으로 큰 이미지 문제가 해결될 수 있습니다. (Ic2a65, b/288828159)
  • 많은 OEM의 확장 프로그램 구현이 ImageAnalysis와 잘 작동하지 않고 일관되지 않은 문제가 발생할 수 있으므로 CameraX 확장 프로그램에서 ImageAnalysis 지원을 삭제했습니다. (I2d926)

버전 1.4.0-alpha04

2024년 1월 24일

androidx.camera:camera-*:1.4.0-alpha04이 출시되었습니다. 버전 1.4.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

  • 새 아티팩트: camera-effects: Preview, VideoCapture 또는 ImageCapture를 포함하여 CameraX 출력에 실시간 효과를 적용하는 라이브러리입니다. 이 아티팩트에는 카메라 출력을 효율적으로 조작하는 CameraEffect API의 OpenGL 구현이 포함되어 있습니다.
  • OverlayEffect: Android의 Canvas API로 오버레이를 그리기 위한 것입니다. 이를 통해 앱은 카메라 출력에 워터마크를 적용하거나 감지된 물체를 강조 표시할 수 있습니다.
  • 미리보기 사용 사례용 DynamicRange API: 이제 동영상 사용 사례와 관계없이 미리보기 사용 사례에서 다이내믹 레인지를 설정할 수 있습니다. 이렇게 하면 미리보기 전용으로 HLG10과 같은 HDR 다이내믹 레인지를 사용할 수 있습니다. CameraInfo에서 각 카메라가 지원하는 다이내믹 레인지를 쿼리하는 새로운 API도 사용할 수 있습니다.

API 변경사항

  • ScreenFlashUiCompleter의 이름을 ScreenFlashListener로 변경하고 ScreenFlashUiCompleter#getExpirationTimeMillisScreenFlash#applyexpirationTimeMillis 매개변수로 이동했습니다. (I13944)
  • 미리보기 사용 사례에서 다이나믹 레인지를 설정하고 각 카메라에서 지원하는 다이나믹 레인지를 쿼리할 수 있는 새로운 API가 추가되었습니다. 이렇게 하면 HLG10과 같은 HDR 다이내믹 레인지를 미리보기 사용 사례와만 사용할 수 있으므로 더 이상 VideoCapture를 동시에 바인딩할 필요가 없습니다. (If25e3)
  • getMirroring()의 이름을 isMirroring()로 바꿨습니다. (I47063)
  • CameraX에 실시간 스틸 캡처 지연 시간 추정치 지원을 추가했습니다. 카메라 확장 프로그램을 사용하면 애플리케이션에서 캡처에 걸리는 예상 시간을 제공하는 API를 사용할 수 있습니다. 예상 시간은 현재 환경 조건, 카메라 상태를 고려하며 다중 프레임 캡처 요청을 처리하는 데 걸린 시간과 필요한 경우 처리된 버퍼를 인코딩하는 데 걸린 추가 시간을 포함합니다. (I05c3a)
  • ScreenFlashUiControlScreenFlash으로, ScreenFlashUiControl#applyScreenFlashUiScreenFlash#apply로, ScreenFlashUiControl#clearScreenFlashUiScreenFlash#clear로 이름을 바꾸고 SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS를 직접 노출하는 대신 getScreenFlashUiApplyTimeoutSeconds 메서드를 추가했습니다. (Iccdd0)

버그 수정

  • 확장이 사용 설정되었을 때 활동 또는 프래그먼트가 해제되지 않는 메모리 누출을 수정했습니다. (I14215)
  • 확대 비율을 증가시킬 때 getZoomRatio이 감소된 값을 잘못 반환하는 문제를 수정했습니다. (I4aa0d, b/317543616)
  • ImageCapture#ScreenFlash#clear 이벤트는 ImageCapture가 바인딩 해제되거나 카메라가 닫힐 때 즉시 호출됩니다. 또한 이러한 시나리오에서 캡처가 제대로 완료되지 않아 호출되지 않는 일부 버그도 수정되었습니다. (If99f9)
  • takePicture 요청이 완료되기 전에 수명 주기가 중지될 때 발생하는 비정상 종료를 수정했습니다. (Idf017, b/306202751)
  • 일부 기기에서 확장 프로그램을 사용 설정하면 카메라 미리보기가 검은색이 되는 문제를 수정했습니다. (I1ffd0)
  • Snapdragon 778G SoC를 사용하는 기기에서 동영상 녹화 시간이 잘못되는 문제를 수정했습니다. (If6aa7, b/316057919)

버전 1.4.0-alpha03

2023년 12월 13일

androidx.camera:camera-*:1.4.0-alpha03이 출시되었습니다. 버전 1.4.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • 지역 제한사항에 따라 셔터 소리를 재생해야 하는지 여부에 관한 정보를 제공하는 CameraInfo.mustPlayShutterSound를 추가했습니다. (Ifda84)
  • 카메라가 프레임 노출을 시작했을 때 알리는 OnImageCapturedCallback.onCaptureStartedOnImageSavedCallback.onCaptureStarted를 추가했습니다. 이 시점에서 셔터 소리 또는 셔터 애니메이션을 재생하는 것이 좋습니다. (Ic49b3)
  • 전면 카메라 이미지 캡처를 위해 CameraX에 화면 플래시 기능 지원을 추가했습니다. CameraX는 프레임워크 측 API 처리를 처리하고 필요에 따라 애플리케이션의 UI 변경사항과 타이밍을 동기화합니다 (예: 앱 화면 색상/밝기 변경 후 AE 사전 캡처 트리거). 앱은 CameraX에 제공된 ScreenFlashUiControl 인터페이스에 UI 측 구현만 추가하면 됩니다. (I8ae84)
  • CameraX에 화면 플래시 기능 UI 측 구현 지원을 추가했습니다. 앱은 PreviewView에서 기본 ImageCapture.ScreenFlashUiControl 구현을 가져오거나 새로 추가된 ScreenFlashView를 가져올 수 있습니다. ScreenFlashView는 화면 플래시 사진 캡처 중에 모노 색상 오버레이 뷰를 추가하고 화면 밝기를 최대화합니다. (I1810e)

API 변경사항

  • 새로운 확장 프로그램 기능(포스트뷰 및 캡처 프로세스 진행률) 지원: 앱이 포스트뷰 및 캡처 프로세스 진행률 콜백의 기능을 쿼리할 수 있는 ImageCapture#getImageCaptureCapabilities() API를 추가했습니다. 앱은 ImageCapture.Builder#setPostviewEnabled()를 사용하여 포스트뷰를 사용 설정할 수 있습니다. ImageCapture.Builder#setPostviewResolutionSelector()를 사용하여 포스트뷰 크기를 선택할 수 있습니다. takePicture()를 호출할 때 OnImageSavedCallback 또는 OnImageCapturedCallback에서 onPostviewBitmapAvailableonCaptureProcessProgressed를 구현하여 지원되는 경우 포스트뷰를 가져오고 진행 상황 알림을 처리할 수 있습니다. (I5cd88)
  • 센서에서 현재 버퍼로의 좌표 변환을 계산하는 API로, Surface에 카메라 방향 정보가 포함되어 있는지 나타내는 플래그가 있습니다. (I59096)
  • 미리보기 UseCase에서 PreviewCapabitlity를 쿼리하는 API를 노출합니다. (Ie5b6c)
  • VideoCapture의 더 많은 품질을 지원하는 API를 추가했습니다. Recorder.Builder#setVideoCapabilitiesSource(int)VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES와 함께 사용하여 VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE보다 더 많은 품질을 지원하는 Recorder 인스턴스를 만들 수 있습니다. 일반적인 사용 사례는 애플리케이션이 가능하면 항상 UHD 동영상을 녹화하려고 하지만 코덱이 UHD 동영상을 녹화할 수 있더라도 기기의 CamcorderProfile에 UHD 설정이 포함되지 않은 경우입니다. (Iedbe2, b/263961771)
  • CameraControllerImageAnalysis 출력 형식 getter/setter를 추가합니다. (I9a96c, b/308240643)

버그 수정

  • 카메라 1.3.1: ProcessCameraProvider#bindToLifecycle() 성능이 개선되었습니다. 주요 변경사항은 UseCases에 가장 적합한 크기 조합을 식별하는 프로세스를 최적화하는 것입니다. 최적의 결과는 특정 UseCase 조합과 대상 기기에서 지원되는 출력 크기의 수에 따라 다릅니다. (I454f2)
  • 확장 프로그램이 사용 설정된 경우 VideoCapture 사용을 허용합니다. (I91f32)
  • 삼성 A71 및 M51 시리즈 기기에서 캡처된 대용량 JPEG 이미지 문제를 수정했습니다. 캡처된 JPEG 이미지의 JFIF 압축 데이터 세그먼트에 중복된 0 패딩 데이터가 포함되어 있습니다. 이로 인해 캡처된 이미지의 파일 크기가 매우 커집니다. 캡처된 이미지의 이미지 파일 크기가 정상이 되도록 이러한 중복 0 패딩 데이터가 삭제됩니다. (I01afc, b/288828159)
  • Pixel에서 ImageAnalysis 지원을 사용 중지하여 Pixel에서 빈 ImageAnalysis 지원 크기를 실수로 반환하는 버그를 방지합니다. (I7ec31)
  • 확장 프로그램이 사용 설정될 때 CPU 부하와 전원 소모가 증가하는 성능 문제가 수정되었습니다. (Ibdccb)
  • CameraUseInconsistentTimebaseQuirk에 Snapdragon 480을 추가했습니다. 이로써 이 칩셋을 사용하는 Android 12 기기에서 녹음 파일의 오디오가 기기가 일시중지 상태인 시간만큼 오프셋되는 문제가 수정되었습니다. (I58010)

버전 1.4.0-alpha02

2023년 10월 18일

androidx.camera:camera-*:1.4.0-alpha02이 출시되었습니다. 버전 1.4.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • API의 이름을 setCameraOpenRetryMaxTimeoutInMillisWhileResuming로 바꾸고 인수의 이름을 바꿉니다. (I72370)
  • 기기 기능을 쿼리하고 동영상/미리보기 흔들림 보정을 사용 설정하는 API를 추가했습니다. (I87544)
  • 카메라 열기 최대 재시도 제한 시간을 맞춤설정하는 API를 제공합니다. (I0c642)
  • 테스트 간에 CameraX를 다른 방식으로 초기화해야 할 수 있는 테스트 모음에서 프로세스 카메라 제공업체를 사용할 수 있도록 ProcessCameraProvider.shutdownAsync를 공개 테스트 API로 출시했습니다. (I9eca7)
  • 동영상 캡처 다이내믹 레인지, 프레임 속도, 미러 모드를 구성하기 위한 API를 추가했습니다. (Ifb8f7)
  • OutputSize를 지원 중단하고 ResolutionSelector로 대체합니다. ResolutionSelector는 해상도를 선택하는 더 포괄적인 방법이며 카메라 코어 API와 일치합니다. (I93abd, b/286801438)

버그 수정

  • 후면 카메라에서 ImageAnalysis를 사용하여 확장 프로그램 빛망울 효과 또는 얼굴 보정 기능을 사용 설정하면 삼성 Galaxy S23 Ultra 5G에서 미리보기 화면이 검은색으로 표시되는 문제를 수정했습니다. (I2e8b1)
  • Moto E5 Play에서 미리보기 및 VideoCapture가 늘어나는 문제를 수정했습니다. (73dce2)

버전 1.4.0-alpha01

2023년 9월 20일

androidx.camera:camera-*:1.4.0-alpha01이 출시되었습니다. 버전 1.4.0-alpha01에 포함된 커밋을 확인하세요.

API 변경사항

  • 녹화 중에 오디오 진폭 정보에 액세스하는 새 API를 추가했습니다. (Id4925)

버그 수정

  • 초기화 및 역초기화 이벤트가 올바른 순서로 트리거되도록 하여 확장 프로그램 안정성을 개선합니다. (Ib3b8e)
  • 내부적으로 반복 노출 영역을 추가하여 지원되는 노출 영역 조합을 초과하여 캡처 세션 구성 실패가 수정되었습니다. (Id718c)
  • Vivo S16 기기에서 캡처된 JPEG 이미지가 큰 문제를 수정했습니다. 캡처된 JPEG 이미지의 JFIF 압축 데이터 세그먼트에 중복된 0 패딩 데이터가 포함되어 있습니다. 이로 인해 캡처된 이미지의 파일 크기가 커집니다. 캡처된 이미지의 이미지 파일 크기가 정상이 되도록 이러한 중복 0 패딩 데이터가 삭제됩니다. (I79505, b/299069235)
  • 일부 기기에서 일부 확장 프로그램 모드가 사용 설정된 경우 ImageAnalysisImageCapture 및 미리보기와 함께 바인딩할 수 없는 문제를 수정했습니다. 이 수정사항을 적용하면 앱이 ExtensionsManager#isImageAnalysisSupported()를 통해 ImageAnalysis 가용성을 쿼리할 때 올바른 값이 반환됩니다. (I7d538)
  • 동작과 일치하도록 JavaDoc을 업데이트합니다. 즉시 완료되지 않고 #setZoomRatio, #setLinearZoom, #enableTorch는 카메라가 준비될 때까지 기다립니다. 또한 #takePicture API로 최대 FOV를 가져오는 방법에 관한 정보를 추가했습니다. (I23588)

버전 1.3

버전 1.3.4

2024년 6월 12일

androidx.camera:camera-*:1.3.4이 출시되었습니다. 버전 1.3.4에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 확대 비율을 증가시킬 때 getZoomRatio이 감소된 값을 잘못 반환하는 문제를 수정했습니다. (I4aa0d, b/317543616)
  • 캡처 세션을 다시 만들고 일부 기기에서 지연 시간 문제 또는 미리보기 화면 멈춤을 일으킬 수 있는 반복 요청 FPS/안정화 모드 값을 정적 캡처/탭 투 포커스가 사용하지 않는 문제를 수정했습니다. (I7dc0b)
  • FRAME_RATE_RANGE_UNSPECIFIED를 사용하여 setTargetFrameRate를 호출할 때 프레임 속도가 더 낮은 값으로 설정되는 문제를 수정했습니다. (I78c61)

버전 1.3.3

2024년 4월 17일

androidx.camera:camera-*:1.3.3이 출시되었습니다. 버전 1.3.3에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 분석기 기본 타겟 해상도 설정과 관련된 ImageAnalysis의 해상도 선택 문제가 수정되었습니다. 애플리케이션에서 다른 분석기 기본 해상도 설정을 설정했더라도 타겟 해상도가 640x480으로 잘못 유지되었습니다. 애플리케이션에 이 문제가 발생 (1.3.0~1.3.2)하고 솔루션이 포함된 최신 버전 출시를 사용하도록 업그레이드할 수 없는 경우, 원하는 해상도와 일치하는 AspectRatioStrategyImageAnalysis UseCase에 직접 설정하여 이 문제를 해결할 수 있습니다.ResolutionSelector (I81f72, b/330091012)

버전 1.3.2

2024년 3월 6일

androidx.camera:camera-*:1.3.2이 출시되었습니다. 버전 1.3.2에는 이 커밋이 포함되어 있습니다.

버그 수정

  • 삼성 A24 기기에서 JPEG 메타데이터 문제를 수정했습니다. 이제 CameraX가 이미지를 정확하게 저장하고 ImageProxy.toBitmap() 함수가 올바른 비트맵 객체를 반환합니다. (I8d6eb, b/309005680)
  • 문제로 인해 Redmi Note 9 Pro 기기에서 9280x6944 해상도 옵션을 삭제했습니다. (Ia23da)

버전 1.3.1

2023년 12월 13일

androidx.camera:camera-*:1.3.1이 출시되었습니다. 버전 1.3.1에 포함된 커밋을 확인하세요.

버그 수정

ProcessCameraProvider#bindToLifecycle() 성능이 개선되었습니다. 주요 변경사항은 UseCases에 가장 적합한 크기 조합을 식별하는 프로세스를 최적화하는 것입니다. 최적의 결과는 특정 UseCase 조합과 타겟 기기에서 지원되는 출력 크기의 수에 따라 다릅니다. (I454f2)

다음은 다양한 시나리오에 대한 참조 결과입니다.

  • UseCases 4개: Preview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7: 약 430ms~60ms
    • 삼성 갤럭시 S23 Ultra: 약 540ms~45ms
    • 삼성 A53 5G: 약 115ms~70ms
  • UseCases 3개: Preview + ImageCapture + ImageAnalysis

    • Google Pixel 7: 약 9ms~7ms
    • 삼성 갤럭시 S23 Ultra: 약 6ms~5ms
    • 삼성 A53 5G: 약 32ms~12ms
  • CameraUseInconsistentTimebaseQuirk에 Snapdragon 480을 추가했습니다. 이로써 이 칩셋을 사용하는 Android 12 기기에서 녹음 파일의 오디오가 기기가 일시중지 상태인 시간만큼 오프셋되는 문제가 수정되었습니다. (I58010)

버전 1.3.0

2023년 10월 18일

androidx.camera:camera-*:1.3.0이 출시되었습니다. 버전 1.3.0에 포함된 커밋을 확인하세요.

1.2.0 이후 중요 변경사항

버전 1.3.0-rc02

2023년 9월 20일

androidx.camera:camera-*:1.3.0-rc02이 출시되었습니다. 버전 1.3.0-rc02에 포함된 커밋을 확인하세요.

버그 수정

  • 초기화 및 역초기화 이벤트가 올바른 순서로 트리거되도록 하여 확장 프로그램 안정성을 개선합니다. 이렇게 하면 확장 프로그램 모드를 전환하거나 카메라를 전환할 때 발생하는 일부 검은색 미리보기 문제가 해결되었습니다. (Iddaac)
  • 일부 기기에서 일부 확장 프로그램 모드가 사용 설정된 경우 ImageAnalysisImageCapture 및 미리보기와 함께 바인딩할 수 없는 문제를 수정했습니다. 이 수정사항을 적용하면 앱이 ExtensionsManager#isImageAnalysisSupported()를 통해 ImageAnalysis 가용성을 쿼리할 때 올바른 값이 반환됩니다. (I7d538)
  • Xiaomi Poco X3 NFC에서 미러링 모드가 사용 설정된 경우 녹화된 동영상 오디오와 동영상의 싱크가 맞지 않는 문제를 수정했습니다. (I20b4c)

버전 1.3.0-rc01

2023년 8월 23일

androidx.camera:camera-*:1.3.0-rc01이 출시되었습니다. 버전 1.3.0-rc01에 포함된 커밋을 확인하세요.

API 변경사항

  • 녹음기의 연결된 VideoCapture가 다시 연결되는 동안 녹화가 계속 녹화되도록 PendingRecording.asPersistentRecording를 추가했습니다. (I517c6)

버그 수정

  • 스트림이 VideoCapture 및 미리보기와 모두 공유될 때 발생하는 비정상 종료가 수정되었습니다. 또한 스트림 공유가 사용 설정된 경우 기존 기기에서 검은색 화면이 표시되는 문제를 수정했습니다.
  • 삼성 S7 (SM-G930T, SM-G930V) 시리즈 기기에서 캡처된 대용량 JPEG 이미지 문제를 수정했습니다. 캡처된 JPEG 이미지의 JFIF 압축 데이터 세그먼트에 중복된 0 패딩 데이터가 포함되어 있습니다. 이로 인해 캡처된 이미지의 파일 크기가 커집니다. 캡처된 이미지의 이미지 파일 크기가 정상이 되도록 이러한 중복 0 패딩 데이터가 삭제됩니다. (I407b0, b/288828159)
  • 삼성 S22 (SM-S901B, SM-S901B/DS) 및 S22+ (SM-S906B) 시리즈 기기에서 캡처된 대용량 JPEG 이미지 문제를 수정했습니다. 캡처된 JPEG 이미지의 JFIF 압축 데이터 세그먼트에 중복된 0 패딩 데이터가 포함되어 있습니다. 이로 인해 S22 SM-S901B/DS 기기에서 캡처된 이미지의 파일 크기가 약 13MB로 커집니다. 캡처된 이미지의 이미지 파일 크기가 정상이 되도록 이러한 중복 0 패딩 데이터가 삭제됩니다. (I73be9, b/288828159)
  • 삼성 A5, A52, A70, A72 시리즈 기기에서 캡처된 대용량 JPEG 이미지 문제를 수정했습니다. 캡처된 JPEG 이미지의 JFIF 압축 데이터 세그먼트에 중복된 0 패딩 데이터가 포함되어 있습니다. 이로 인해 캡처된 이미지의 파일 크기가 매우 커집니다 (예: 약 32MB 또는 96MB). 캡처된 이미지의 이미지 파일 크기가 정상이 되도록 이러한 중복 0 패딩 데이터가 삭제됩니다. (I97c4d, b/288828159)
  • 확장 프로그램을 사용 설정하고 사진을 찍을 때 발생하는 네이티브 비정상 종료가 수정되었습니다. (I698f5)

버전 1.3.0-beta02

2023년 7월 26일

androidx.camera:camera-*:1.3.0-beta02이 출시되었습니다. 버전 1.3.0-beta02에 포함된 커밋을 확인하세요.

버그 수정

  • Pixel 4 및 5 변형에서 토치를 플래시로 사용하여 저조도 환경에서 캡처 품질을 개선합니다. (I56ff5, b/280221967)
  • 삼성 A5 (2017) 시리즈 기기에서 캡처된 대용량 JPEG 이미지 문제를 수정했습니다. 캡처된 JPEG 이미지의 JFIF 압축 데이터 세그먼트에 중복된 0 패딩 데이터가 포함되어 있습니다. 이로 인해 캡처된 이미지의 파일 크기가 약 32MB가 됩니다. 캡처된 이미지의 이미지 파일 크기가 정상이 되도록 이러한 중복 0 패딩 데이터가 삭제됩니다. (I29837, b/288828159)
  • CaptureFailedRetryQuirk에 언급된 문제 있는 기기에서 캡처 실패 시 재시도가 제대로 트리거되지 않는 문제를 수정했습니다. (I7b589)

버전 1.3.0-beta01

2023년 6월 21일

androidx.camera:camera-*:1.3.0-beta01이 출시되었습니다. 버전 1.3.0-beta01에 포함된 커밋을 확인하세요.

API 변경사항

  • ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) 함수 이름을 setAllowedResolutionMode로 변경하고 ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 상수를 PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE로 변경했습니다. (If84e8)
  • 지원 중단된 API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int), VideoCapture.setTargetRotationDegrees(int)를 삭제했습니다. (Id8e77)
  • DynamicRange 클래스는 이미지의 다이내믹 레인지를 나타냅니다. 이를 사용하여 VideoCapture~VideoCapture.Builder#setDynamicRange()의 출력으로 HDR 형식을 선택할 수 있습니다. (Ib0377)
  • 확장 프로그램이 사용 설정된 경우 앱에서 미리보기 및 ImageCapture와 함께 ImageAnalysis 사용 사례를 결합할 수 있는지 확인할 수 있는 isImageAnalysisSupported API를 ExtensionsManager에 추가했습니다. (I1bc63)
  • Recorder에서 가져온 새 VideoCapabilities 클래스를 사용하여 기기에서 동영상 녹화에 지원되는 다이나믹 레인지와 화질을 쿼리할 수 있습니다. QualitySelectorgetSupportedQualities()isQualitySupported() 메서드가 지원 중단됩니다. 대신 VideoCapabilitiesgetSupportedQualities()isQualitySupported() 메서드를 사용하세요. (I04014)
  • CameraController#setVideoCaptureTargetQuality()의 이름이 setVideoCaptureQualitySelector로 변경되고 인수 QualitySelector를 사용하여 동영상 화질 설정을 더 유연하게 할 수 있습니다. CameraController#getVideoCaptureTargetQuality()getVideoCaptureQualitySelector로 변경됩니다. (I520ed)
  • 동영상 기능의 실험용 주석이 삭제되었습니다. 이제 동영상 기능이 안정화되었습니다. (I1a113)

버그 수정

  • Samsung SM-A320 모델에서 토치를 플래시로 사용하여 어두운 환경에서 속도와 캡처된 이미지 품질을 개선합니다. (I6a022, b/286190938)
  • ImageProxy.toBitmap()ImageFormat.JPEG 형식 지원을 추가합니다. JPEG 바이트 배열을 디코딩할 수 없는 경우 UnsupportedOperationException이 발생합니다. (I81958, b/282057603)

버전 1.3.0-alpha07

2023년 5월 24일

androidx.camera:camera-*:1.3.0-alpha07이 출시되었습니다. 버전 1.3.0-alpha07에 포함된 커밋을 확인하세요.

새로운 기능

  • VideoCapture.Builder# setTargetFrameRate(Range) API를 사용하면 동영상 녹화 파일을 기기 기본값 이외의 다른 프레임 속도로 캡처할 수 있습니다. 녹화에 사용할 수 있는 프레임 속도는 새 CameraInfo#getSupportedFrameRates() API를 통해 쿼리할 수 있습니다.

API 변경사항

  • ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON 상수의 이름을 ALLOWED_RESOLUTIONS_NORMAL/SLOW로, 빌더 setHighResolutionEnabledFlag 함수 이름을 setAllowedResolutionMode로 변경했습니다. (Iae817)
  • 이제 CameraInfo#getSupportedFrameRateRanges()가 범위가 순서가 없다는 것을 더 잘 나타내기 위해 List 대신 Set를 반환합니다. (I02f43)
  • 복구할 수 없는 오류를 처리하기 위해 CameraEffect에 오류 리스너를 추가합니다. (Ice471)
  • 테스트 가능성을 개선하기 위해 ResolutionInfo에 공개 생성자를 추가했습니다. (If6d1c)
  • setTargetRotationDegrees 사용을 대체하고 API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int), VideoCapture.setTargetRotationDegrees(int)를 지원 중단하는 API UseCase.snapToSurfaceRotation(int)를 제공했습니다. (Ia9010)
  • 미리보기 사용 사례의 타겟 프레임 속도를 설정하고 검색할 수 있는 새 API Preview#getTargetFrameRatePreview.Builder#setTargetFrameRate를 추가했습니다. (If4f22)
  • 이제 가비지 컬렉션으로 인해 Recording 객체가 중지되면 VideoRecordEvent.Finalize가 오류 코드 ERROR_RECORDING_GARBAGE_COLLECTED로 완료됩니다. (Iba974)

버그 수정

  • StreamConfigurationMapCompat의 캐시된 출력 크기가 null인 경우 NullPointerException를 수정했습니다. (Idf124, b/282025204)
  • Preview.setSurfaceProvider(null)가 확장 프로그램에서 미리보기를 일시중지하지 않는 문제를 수정했습니다. (Ia903e)
  • VideoCapture가 바인딩된 경우 카메라를 여는 동안 ConcurrentModificationException가 발생하는 문제를 수정했습니다. (Ic8ac4)

버전 1.3.0-alpha06

2023년 4월 19일

androidx.camera:camera-*:1.3.0-alpha06이 출시되었습니다. 버전 1.3.0-alpha06에 포함된 커밋을 확인하세요.

새로운 기능

  • 동시 카메라는 Android 11부터 도입된 새로운 기능으로, 카메라 기기의 동시 스트리밍을 지원합니다. 예를 들어 기기의 전면 카메라와 후면 카메라를 동시에 작동할 수 있습니다. CameraX는 현재 두 개의 카메라가 동시에 작동하도록 허용하고 각 카메라에 최대 2개의 {@link UseCase}를 바인딩하는 듀얼 동시 카메라만 지원합니다. 최대 해상도는 720p 또는 1440p입니다. 자세한 내용은 다음 링크(CameraManager#getConcurrentCameraIds())를 참고하세요.
  • 다음 기능을 다루는 새로운 ResolutionSelector API를 소개합니다.
    • 애플리케이션은 가로세로 비율 및 해상도 전략을 지정하여 필요에 가장 적합한 해상도를 선택할 수 있습니다.
    • 모든 크기 및 가로세로 비율 매개변수는 카메라 기기 센서의 좌표로 표현됩니다.
    • 애플리케이션은 맞춤 해상도 필터를 구현하여 지원되는 크기를 원하는 순서로 정렬할 수 있습니다.
    • 애플리케이션은 고해상도 캡처를 사용 설정하여 더 높은 해상도의 이미지를 얻을 수도 있습니다. 하지만 고해상도를 사용하면 캡처 시간이 느려질 수 있습니다.
    • VideoCapture 미러링 API를 추가했습니다. VideoCapture로 녹화된 동영상은 기본적으로 미러링되지 않습니다. 하지만 카메라 미리보기는 기본적으로 전면 카메라에 미러링됩니다. VideoCapture 미러링 API를 사용하면 전면 카메라를 사용할 때 카메라 미리보기에 맞출 수 있습니다. MirrorMode, OFF, ON, ON_FRONT_ONLY가 세 개 있습니다. 카메라 미리보기와 일치하려면 ON_FRONT_ONLY를 사용하는 것이 좋습니다. 즉, 미러링이 후면 카메라에는 사용 설정되지 않지만 전면 카메라에는 사용 설정됩니다.

API 변경사항

  • ResolutionSelector API를 노출했습니다. 애플리케이션은 대체 규칙 또는 맞춤 해상도 필터를 사용하여 가로세로 비율 및 해상도 전략을 지정하여 원하는 결과를 얻을 수 있습니다. 애플리케이션은 고해상도 캡처를 사용 설정하는 플래그를 지정할 수 있습니다. 이렇게 하면 CameraX가 사진이나 동영상을 찍을 때 더 높은 해상도를 선택할 수 있습니다. 하지만 고해상도를 사용하면 캡처 시간이 느려질 수 있습니다. (Ibed95)
  • 이제 AE 알고리즘에서 지원하는 FPS 범위를 CameraInfo#getSupportedFrameRateRanges()를 통해 쿼리할 수 있습니다. (Iaa67f)
  • 모든 프레임 속도 메서드의 이름을 'FrameRate'로 통합합니다. VideoCapture#getTargetFrameRate()의 javadoc 실수를 수정했습니다. (I83304)
  • 기존 setTargetAspectRatiosetTargetResolution API를 지원 중단했습니다. 대신 새 ResolutionSelector API를 사용하세요. (I542c3)
  • 동시 듀얼 카메라를 위한 공개 API를 추가했습니다.
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn()ConcurrentCameraConfig, SingleCameraConfig, ConcurrentCamera (Iab1c1)
  • ImageProcessor.Response#getOutputImage를 NonNull로 설정합니다. (Ib9c60)
  • VideoCapture.Builder.setMirrorMode(int)VideoCapture.getMirrorMode()를 포함한 VideoCapture 미러링 API를 추가했습니다. 이 API는 동영상 녹화의 결과가 일반적인 카메라 미리보기 동작과 일치해야 하는 애플리케이션에 유용합니다. 즉, 후면 카메라 미리보기는 미러링되지 않지만 전면 카메라 미리보기는 미러링됩니다. (I713b6, b/194634656)
  • VideoCapture.BuildersetTargetFrameRate() API를 추가하고 VideoCapturegetTargetFramerate() API를 추가했습니다. (I109d4)
  • SurfaceOutput를 Closable을 확장하도록 만들고 SurfaceOutput.Event의 공개 생성자를 숨깁니다. (I60ea8)
  • 처리 중인 녹화 파일을 동적으로 음소거하거나 음소거 해제하는 Recording.mute를 추가했습니다. 처리 중인 녹화 파일이 명시적으로 음소거되면 RecordingStatsAudioStats.AUDIO_STATE_MUTED이 포함됩니다. (Ie17fc)
  • #setEffects() 매개변수를 null이 아닌 것으로 만들었습니다. 효과를 지우는 #clearEffects() API를 추가합니다. 앱은 #clearEffects()를 호출하여 효과를 삭제해야 합니다. (I4b4d9)
  • 복사 생성자의 빌더를 가져오도록 ViewfinderSurfaceRequest.Builder의 두 번째 생성자를 추가했습니다. (I621a7)

버그 수정

  • 카메라를 닫을 때 Extensions API를 호출하는 앱이 비정상 종료될 수 있는 문제를 수정했습니다. (Ib27e5)
  • 일부 기기에서 VideoCapture가 전면 카메라와 함께 작동하지 않는 문제를 수정했습니다. 예를 들어 삼성 Galaxy S23 및 Xiaomi 2107113SG에서 (Ibec7e, b/270656244)
  • Android 10 이상에서 외부 저장소의 공용 폴더에 있는 파일을 사용하여 사진을 찍을 때 항상 실패하는 문제를 수정했습니다. Android 10에서는 외부 저장소의 공개 폴더에서 File을 사용하여 사진을 찍으려면 애플리케이션 태그에서 requestLegacyExternalStorage를 true로 설정해야 합니다. (I11b2c)
  • DefaultSurfaceProcessor에서 RejectedExecutionException 비정상 종료 문제를 수정했습니다. VideoCapture이 바인딩되고 활동이 일시중지되면 비정상 종료가 발생할 수 있습니다. (Idb46a, b/273713906)

버전 1.3.0-alpha05

2023년 3월 22일

androidx.camera:camera-*:1.3.0-alpha05이 출시되었습니다. 버전 1.3.0-alpha05에 포함된 커밋을 확인하세요.

API 변경사항

  • VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int), VideoCapture.getTargetRotation()를 포함한 VideoCapture 회전 API를 추가했습니다. 이 API는 기기 방향을 잠그는 애플리케이션에 유용합니다. ImageCapture.setTargetRotationDegrees(int)ImageAnalysis.setTargetRotationDegrees(int)도 추가됩니다. (Id3ffe, b/205242781)
  • VIDEO_CAPTUREPREVIEW|VIDEO_CAPTURE를 효과 타겟으로 허용합니다. VIDEO_CAPTURE를 타겟팅하는 효과는 VideoCapture UseCase에 적용됩니다. PREVIEW|VIDEO_CAPTURE를 타겟팅하는 효과는 미리보기 및 VideoCapture 스트림에 복사하기 전에 공유 스트림에 적용됩니다. (Iee6f3)

버그 수정

  • 카메라 1.2.2: Pixel과 같은 일부 기기에서 Proguard가 사용 설정되어 있으면 CameraX 확장 프로그램이 제대로 작동하지 않는 문제를 수정했습니다. (I90aa2)
  • 앱이 화면 방향을 직접 처리하는 경우 회전 시 미리보기가 왜곡될 수 있는 PreviewView 버그가 수정되었습니다. 이 문제는 특정 기기에서만 발생합니다. Pixel a4, Pixel 5, Pixel 6a에서 재현할 수 있습니다. (I14340, b/223488673)

버전 1.3.0-alpha04

2023년 2월 22일

androidx.camera:camera-*:1.3.0-alpha04가 출시되었습니다. 버전 1.3.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

한 스트림을 여러 UseCases에 공유하여 이전에 지원되지 않았던 Surface 조합을 지원하는 새로운 기능입니다.

  • 이전에는 카메라 하드웨어 수준 FULL 이하에서 'Preview, VideoCapture, ImageAnalysis'를 결합하거나 하드웨어 수준 LEGACY에서 'Preview, VideoCapture, ImageCapture'를 결합하면 CameraX에서 IllegalArgumentException이 발생했습니다.
  • 이제는 결합을 하더라도 예외가 발생하지 않습니다. 대신 CameraX는 OpenGL을 사용하여 공유 스트림을 Preview 및 VideoCapture에 모두 복사합니다.
  • 버퍼 사본의 비용으로 인해 앱의 지연 시간과 전력 소비가 늘어날 수 있습니다.

API 변경사항

  • ImageProxyBitmap으로 변환하는 API를 추가했습니다. 지원되는 ImageProxy 형식은 ImageFormat.YUV_420_888PixelFormat.RGBA_8888입니다. 형식이 잘못된 경우 IllegalArgumentException이 발생합니다. (Ic7110)
  • Kotlin에서 정지 함수를 사용하여 뷰파인더 구성을 지원하도록 CoroutineCameraViewfinder를 추가했습니다. (I657bc)
  • ViewfinderSurfaceRequest의 새 공개 생성자를 추가했습니다. 이는 사용자가 CameraCharacteristics를 제공할 수 없는 경우 유연성을 제공합니다. (Ie6549)

버그 수정

  • 앱을 너무 빠르게 일시중지/재개할 때 일부 삼성 기기에서 발생하는 확장 프로그램 비정상 종료 문제를 수정했습니다. (Iaca26)

버전 1.3.0-alpha03

2023년 1월 25일

androidx.camera:camera-*:1.3.0-alpha03이 출시되었습니다. 버전 1.3.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • 기본 카메라를 기준으로 한 시야각 정보를 제공하도록 CameraInfo.getIntrinsicZoomRatio를 추가했습니다. (Ib300c)
  • CameraInfo.getLensFacing을 추가하여 렌즈의 방향 정보를 제공합니다. 외장 카메라 선택을 위한 실험용 기능으로 CameraSelector#LENS_FACING_EXTERNAL을 추가했습니다. (Icaf3e)
  • 카메라 출력에 효과를 추가할 수 있도록 #setEffect()CameraController에 추가합니다. (I1d21f)
  • SurfaceRequestinvalidate() 메서드를 추가합니다. 노출 영역 제공자는 이전에 제공된 노출 영역이 더 이상 유효하지 않다고 알릴 수 있습니다. (Idc649)
  • ImageProcessor API를 추가합니다. 이 인터페이스는 후처리 효과를 ImageCapture 파이프라인에 삽입하기 위한 것입니다. (I575c6)
  • QualitySelector와 결합하여 더 많은 동영상 해상도를 지원할 수 있는 Recorder.Builder.setAspectRatio() API를 추가했습니다. (I8a082)
  • 타겟 동영상 인코딩 BitRate를 설정하는 Recorder.Builder#setTargetVideoEncodingBitRate와 타겟 동영상 인코딩 비트 전송률을 가져오는 Recorder#getTargetVideoEncodingBitRate를 추가했습니다. (I5984d)

버그 수정

  • 플래시 장치가 없는데 플래시 모드가 켜져 있을 때 ImageCapture가 실패하는 문제를 해결했습니다. (I9e8b4, b/263391112)
  • Exif 위치 데이터를 기록할 때 일부 삼성 Android 12 기기에서 JPEG 이미지 손상이 발생하는 문제를 해결했습니다. (Ib7086, b/263747161, b/263289024)
  • 카메라 초기화를 완료하기 전에 토치/확대/축소를 설정하면(예: CameraController#enableTorch 호출) 대기 중인 작업이 캐시되고 초기화가 완료된 후에 실행됩니다. (I11e92, b/264157663)

버전 1.3.0-alpha02

2022년 12월 7일

androidx.camera:camera-*:1.3.0-alpha02가 출시되었습니다. 버전 1.3.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • 미리보기 출력에 후처리 효과를 적용하는 새 API를 추가합니다. (Ic17d5)
  • OutputOptions.getDurationLimit의 이름이 OutputOptions.getDurationLimitMillis로, OutputOptions.setDurationLimit의 이름이 OutputOptions.setDurationLimitMillis로 변경되었습니다. (I91f0c)
  • 동영상을 녹화하는 동안 오디오 관련 설정을 처리하기 위한 AudioConfig 클래스를 추가합니다. 오디오가 필요하지 않은 경우 불필요한 권한 요청을 방지하기 위해 @RequiresPermission 주석이 startRecording 함수에서 AudioConfig로 이동됩니다. (I28755)
  • 새 동영상 캡처 API를 적용한 후 더 이상 사용되지 않는 메타데이터, OnVideoSavedCallback, OutputFileOptions, OutputFileResults 클래스를 삭제합니다. (I38cd8)
  • 새 동영상 캡처 API를 적용합니다. setTargetResolution이 더 이상 지원되지 않으므로 그에 따라 getVideoCaptureTargetSizesetVideoCaptureTargetSize 메서드가 getVideoCaptureTargetQualitysetVideoCaptureTargetQuality 메서드로 대체됩니다. (I2a1d5)

버그 수정

  • 지원 중단된 core.VideoCapture API를 삭제합니다. (I531e0)
  • 저장소 권한 없이 사진을 찍을 때 onError 콜백이 호출되지 않는 문제를 해결했습니다. (I936db, b/244807669)
  • 카메라 확장 프로그램의 품질과 안정성을 개선합니다. 빛망울 효과 지원, 이미지 캡처 및 미리보기가 재개되지 않는 문제로 인해 카메라 확장 프로그램 v1.1.0 이하를 사용하는 Motorola 기기에서는 카메라 확장 프로그램이 사용 중지됩니다. (Id3ce3)
  • 기존 기기에서 ViewPort를 통한 동영상 자르기를 사용 설정할 때 발생하는 네이티브 충돌이 해결되었습니다. (I16b8a, b/251357665)

버전 1.3.0-alpha01

2022년 11월 9일

androidx.camera:camera-*:1.3.0-alpha01이 출시되었습니다. 버전 1.3.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

  • Camera-viewfinder가 공식적으로 게시되었습니다. Camera-viewfinder는 Camera2의 카메라 피드를 표시할 수 있는 기본 뷰파인더 위젯을 제공합니다. 샘플 코드에서 예를 확인하세요.

API 변경사항

  • 동영상 재생 시간 제한을 설정할 수 있도록 OutputOptions.setDurationLimit를 추가했습니다. 지정된 재생 시간 제한을 초과하면 녹화가 자동으로 완료됩니다. (I902a0)
  • 동영상 녹화 오디오 오류 상태(AudioStats.AUDIO_STATE_SOURCE_ERROR)를 추가했습니다. 오디오 소스 설정에 실패하거나 오류가 발생하면 전송됩니다. (I37410)

버그 수정

  • quirk를 추가하여 문제가 있는 기기에서 캡처 실패가 발생할 때 캡처를 다시 한번 시도할 수 있습니다. (Id4795)
  • ViewPager2에서 PreviewView SurfaceView 구현 검은색 화면 문제를 수정했습니다. 수정 과정에서 PreviewView는 요청된 해상도가 변경되지 않는 경우 SurfaceView를 재사용합니다. (Ib3f27)
  • ViewPort 또는 CameraController API 사용 시 동영상 자르기(WYSIWYG 기능)를 지원합니다. (Ifbba8, b/201085351)
  • Huawei P40 lite에서 전면 카메라로 캡처한 동영상이 녹화되지 않는 문제를 수정했습니다. (I87c57, b/250807400)

버전 1.2

버전 1.2.3

2023년 5월 24일

androidx.camera:camera-*:1.2.3이 출시되었습니다. 버전 1.2.3에 포함된 커밋을 확인하세요.

버그 수정

  • 일부 기기에서 VideoCapture가 전면 카메라와 함께 작동하지 않는 문제를 수정했습니다. 예를 들어 삼성 Galaxy S23 및 Xiaomi 2107113SG에서 (Ibec7e, b/270656244)

버전 1.2.2

2023년 3월 22일

androidx.camera:camera-*:1.2.2이 출시되었습니다. 버전 1.2.2에 포함된 커밋을 확인하세요.

버그 수정

  • Pixel과 같은 일부 기기에서 Proguard가 사용 설정되어 있으면 CameraX 확장 프로그램이 제대로 작동하지 않는 문제를 수정했습니다. (I90aa2)

버전 1.2.1

2023년 1월 25일

androidx.camera:camera-*:1.2.1이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.

버그 수정

  • Exif 위치 데이터를 기록할 때 일부 삼성 Android 12 기기에서 JPEG 이미지 손상이 발생하는 문제를 해결했습니다. (b/263289024)

버전 1.2.0

2022년 12월 7일

androidx.camera:camera-*:1.2.0이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.

1.1.0 이후 중요 변경사항

  • 새 라이브러리 camera-mlkit-vision. CameraX는 바코드 스캔, 얼굴 인식, 텍스트 감지 등 여러 MLKit 기능과 쉽게 통합됩니다. MLKitAnalyzer가 새 API로 추가되었습니다.
  • 새로운 실험용 Zero-Shutter Lag API. 우수한 이미지 품질을 유지하면서도 지연 시간을 단축하도록 캡처 파이프라인을 최적화합니다. 캡처 모드가 CAPTURE_MODE_ZERO_SHUTTER_LAG로 설정되면 다른 캡처 모드와 비교했을 때 촬영 버튼 클릭과 사진 촬영 사이의 지연 시간이 최소화됩니다. ZERO_SHUTTER_LAG를 지원하지 않는 기기에서는 CAPTURE_MODE_MINIMIZE_LATENCY로 대체됩니다.
  • android.camera.core.VideoCapture가 지원 중단되었습니다.
  • setStreamUseCase()를 공개 Camera2Interop API로 추가했습니다.
  • setOutputImageRotationEnabled에 관한 API 수준 요구사항을 추가했습니다.
  • ImageAnalysis.Analyzer#getTargetResolutionOverride()에서 ImageAnalysis.Analyzer#getDefaultTargetResolution()으로 이름이 변경되었습니다.
  • 저장된 동영상에 위치 메타데이터를 설정하는 API를 추가했습니다.
  • 16:9 가로세로 비율로 VideoCapture 및 미리보기 사용 사례를 사용할 때 발생하는 낮은 프레임 속도를 수정했습니다.
  • 일부 삼성 기기에서 빛망울 효과 확장 프로그램을 사용 설정하고 사용자가 카메라를 전환할 때 미리보기 화면이 검은색이 되는 문제를 수정했습니다.
  • API 수준 27 기기에서 삼성 J7 Prime(SM-G610M) 및 J7(SM-J710MN) Preview/VideoCapture가 늘어나는 문제를 수정했습니다.
  • 이 문제는 해결되었으므로 삼성 Android T에서 전면 카메라의 AF 영역을 가로로 뒤집는 해결 방법을 사용 중지했습니다.

버전 1.2.0-rc01

2022년 10월 24일

androidx.camera:camera-*:1.2.0-rc01이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.

API 변경사항

  • OutputConfigurationsetStreamUseCase API를 추가합니다. 사용자는 스트림 세션의 스트림 사용 사례를 지정할 수 있으므로 스트림 사용 사례를 선택하도록 CameraX의 내부 로직을 재정의해 필요에 따라 최적화할 수 있습니다. (Ib1a95)

버그 수정

  • API 수준 27 기기에서 삼성 J7 Prime(SM-G610M) 및 J7(SM-J710MN) Preview/VideoCapture가 늘어나는 문제를 수정했습니다. 1920x1080 해상도에서는 Preview/VideoCapture 이미지가 늘어납니다. 이미지가 늘어나는 문제를 방지하기 위해 미리보기 또는 VideoCapture에 1920x1080 해상도를 선택하지 않는 해결 방법을 추가했습니다. (I0e04e)
  • 일부 화웨이 기기에서 16:9 가로세로 비율로 VideoCapture 및 미리보기 사용 사례를 사용할 때 발생하는 낮은 프레임 속도를 수정했습니다. (If8c88, b/223643510)
  • 미리보기의 SurfaceProvider가 설정되지 않은 경우 카메라가 열리지 않는 문제를 해결했습니다. 수정의 일환으로 이제 SurfaceProvider가 설정되지 않은 미리보기는 카메라 캡처 세션에 구성되지 않습니다. (I99681)

버전 1.2.0-beta02

2022년 9월 21일

androidx.camera:camera-*:1.2.0-beta02가 출시되었습니다. 버전 1.2.0-beta02에 포함된 커밋을 확인하세요.

API 변경사항

  • setOutputImageRotationEnabled의 API 수준 요구사항을 추가합니다. (I26e3e, b/240993561)

버그 수정

  • 이 문제는 해결되었으므로 삼성 Android T에서 전면 카메라의 AF 영역을 가로로 뒤집는 해결 방법을 사용 중지했습니다. (I05f69)
  • 일부 삼성 기기에서 BOKEH 확장 프로그램을 사용 설정하고 사용자가 카메라를 전환할 때 미리보기 화면이 검은색이 되는 문제를 수정했습니다. (If6168)

버전 1.2.0-beta01

2022년 8월 24일

androidx.camera:camera-*:1.2.0-beta01이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.

새로운 기능

  • 새 라이브러리 camera-mlkit-vision. CameraX는 바코드 스캔, 얼굴 인식, 텍스트 감지 등 여러 MLKit 기능과 쉽게 통합됩니다. 여기에서 샘플 코드를 확인하세요.
  • 새로운 실험용 Zero-Shutter Lag API. 우수한 이미지 품질을 유지하면서도 지연 시간을 단축하도록 캡처 파이프라인을 최적화합니다. 캡처 모드가 CAPTURE_MODE_ZERO_SHUTTER_LAG로 설정되면 다른 캡처 모드와 비교했을 때 촬영 버튼 클릭과 사진 촬영 사이의 지연 시간이 최소화됩니다. ZERO_SHUTTER_LAG를 지원하지 않는 기기에서는 CAPTURE_MODE_MINIMIZE_LATENCY로 대체됩니다.
  • ImageAnalysis.AnalyzerMLKitAnalyzer를 공식 API로 만들었습니다.
  • 저장된 동영상에 위치 메타데이터를 설정하는 API를 노출했습니다.
  • ImageAnalysis.Analyzer#getTargetResolutionOverride()의 이름을 ImageAnalysis.Analyzer#getDefaultTargetResolution()으로 바꿉니다.

버그 수정

  • Alps k61v1_basic_ref 이미지 캡처 문제가 수정되었습니다. HAL에서 캡처한 JPEG 이미지에 잘못된 Exif 메타데이터가 있습니다. Exif 메타데이터에 ExifInterface가 속성을 올바르게 파싱하도록 하는 0xffd9 또는 0xffda 태그가 없습니다. 이 문제를 해결하기 위해 이미지를 YUV 형식으로 캡처한 다음 JPEG 출력 이미지로 압축합니다. (I45abb)

버전 1.2.0-alpha04

2022년 7월 27일

androidx.camera:camera-*:1.2.0-alpha04가 출시되었습니다. 버전 1.2.0-alpha04에 포함된 커밋을 확인하세요.

API 변경사항

  • ImageAnalysis.Analyzer#getTargetResolutionOverride()의 이름을 ImageAnalysis.Analyzer#getDefaultTargetResolution()으로 바꿉니다. 이에 더해 이 메서드에서 반환하는 값이 ImageAnalysis#setTargetResolution()의 값으로 재정의될 수 있도록 동작이 변경되었습니다. (If1d36)
  • 저장된 동영상에 위치 메타데이터를 설정하는 API를 노출했습니다. android.location.Location 객체는 새 API androidx.camera.video.OutputOptions.Builder.setLocation(Location)을 통해 설정할 수 있습니다. (I313a0, b/204197544)

버그 수정

  • 바인딩 해제 미리보기로 사진을 찍을 때의 문제를 수정했습니다. (Ie70b6, b/235119898)
  • 오디오 소스를 사용할 수 없을 때 녹화를 시도하면 Recorder에서 비정상 종료되는 문제를 수정했습니다. (I9f652)

버전 1.2.0-alpha03

2022년 6월 29일

androidx.camera:camera-*:1.2.0-alpha03이 출시되었습니다. 버전 1.2.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • ImageAnalysis.AnalyzerMLKitAnalyzer의 실험용 주석이 삭제되었습니다. (I0ff22)

버그 수정

  • FocusMeteringAction이 취소되지 않고 AF 부분이 기간에 수렴되지 않으면 isFocusSuccessful이 있는 AF 부분을 false로 완료하는 자동 초점 기본 시간 제한 5000ms를 추가했습니다. (Ibc2e3)
  • 바인딩 해제 미리보기로 사진을 찍을 때의 문제를 수정했습니다. (I1d3a2, b/235119898)
  • 고급 확장 케이블 구현을 사용 설정하고 CameraX 지원 extensions-interface 버전을 1.2로 업데이트합니다. (I92256)

버전 1.2.0-alpha02

2022년 6월 1일

androidx.camera:camera-*:1.2.0-alpha02가 출시되었습니다. 버전 1.2.0-alpha02에 포함된 커밋을 확인하세요.

새로운 기능

  • CameraX Zero-Shutter Lag API를 실험용으로 노출합니다.

API 변경사항

  • ImageCapture에 새 캡처 모드 CAPTURE_MODE_ZERO_SHUTTER_LAG를 추가하고 CameraInfoisZslSupported를 추가하여 기기 기능을 쿼리합니다. CAPTURE_MODE_ZERO_SHUTTER_LAG 모드는 인스턴트 캡처에 최소 지연 시간을 제공하는 것을 목표로 합니다. 이는 사용자가 사진을 찍으려고 버튼을 누를 때 나중에 재처리할 수 있도록 중간 캡처 결과를 캐시하는 링 버퍼를 기반으로 구현됩니다. {@link VideoCapture}가 바인딩되거나 플래시 모드가 사용 중지되어 있거나 OEM 확장 프로그램이 사용 설정되어 있으면 이 모드가 자동으로 사용 중지됩니다. (I9ae74)
  • ImageAnalysis.getBackgroundExecutor() 메서드를 추가합니다. (Icc945)

버그 수정

  • 보고된 기기에서 ImageCapture takePicture 메서드가 토치를 사용 중지하는 문제를 수정했습니다. (Ib5eb5, b/228272227)
  • CONTROL_ZOOM_RATIO_RANGE 특성을 가져올 때 AssertionError가 처리되지 않는 버그를 수정했습니다. (/Ia248a, b/231701345)

버전 1.2.0-alpha01

2022년 5월 18일

androidx.camera:camera-*:1.2.0-alpha01이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

  • 새 라이브러리 camera-mlkit-vision이 출시되었습니다.

버그 수정

  • 대체 전략이 사용 설정된 경우 QualitySelector가 UHD 동영상을 녹화하지 못하는 문제가 해결되었습니다. 이 문제는 VideoCapture가 FULL 이상의 하드웨어 수준 카메라 기기에서 ImageCapture 및 미리보기에 바인딩된 경우 발생합니다. QualitySelector의 대체 전략으로 인해 VideoCapture가 FHD 해상도를 잘못 가져옵니다. 실제로 이 사용 사례 조합에서는 UHD 해상도가 지원되므로 이를 채택해야 합니다. (I0e788, b/230651237)
  • ImageCapture.takePicture()NullPointerException이 수정되었습니다. (I92366, b/230454568, b/229766155)
  • androidx.camera.video.Recorder의 비동기 일시중지 동작이 수정되었습니다. (Ia8ce8)

Camera-Camera2, Camera-Core, Camera-Lifecycle, Camera-Video 버전 1.1.0

버전 1.1.0

2022년 6월 29일

androidx.camera:camera-*:1.1.0이 출시되었습니다. 버전 1.1.0에 포함된 커밋을 확인하세요.

1.0.0 이후 중요 변경사항

  • 뷰 라이브러리, 확장 프로그램 라이브러리, 동영상 캡처 라이브러리가 첫 RC 버전으로 지정되었습니다. 1.1.0-beta01부터 모든 CameraX 라이브러리가 동일한 버전 번호를 정렬합니다. 이를 통해 개발자가 버전을 훨씬 더 쉽게 추적하고 대규모 버전 호환성 매트릭스의 복잡성을 줄일 수 있습니다.
  • 다음을 포함한 새로운 공개 API 및 기능이 도입되었습니다.
  • 동영상 캡처 사용 사례를 지원하기 위해 공식 카메라-동영상 라이브러리를 추가했습니다.
  • YUV에서 RGB로의 변환 기능 및 회전 기능(ImageAnalysis.Builder.setOutputImageRotationEnabledsetOutputImageFormat)
  • 다른 앱에 의해 카메라가 중단된 후 포커스가 다시 지정되면 카메라를 다시 사용하도록 CameraX 애플리케이션에 허용함으로써 멀티 윈도우 모드를 지원합니다.
  • 일부 미리보기 문제를 해결하여 폴더블 기기에서 CameraX가 제대로 작동하도록 합니다.
  • CameraInfo를 통해 노출될 CameraState API를 추가했습니다.
  • 사용 가능한 카메라에 관한 정보를 직접 검색하는 API ProcessCameraProvider.getAvailableCameraInfos()를 추가했습니다.
  • 확장 프로그램이 사용 설정되면 ImageCapture#OnImageCapturedCallback의 JPEG 형식을 출력합니다.
  • 애플리케이션이 현재 카메라에서 주어진 FocusMeteringAction에 대한 지원 여부를 확인할 수 있는 API isFocusMeteringSupportedCameraInfo에 추가했습니다.
  • 미리보기, ImageCapture, ImageAnalysis의 해상도 정보를 제공하려고 getResolutionInfo API를 노출했습니다.
  • 사진을 찍을 때 출력 JPEG 이미지 압축 품질을 변경할 수 있도록 새로운 API인 ImageCapture.Builder#setJpegQuality를 추가했습니다.
  • CameraSelector를 기준으로 CameraInfos 목록을 필터링하도록 CameraSelector#filter를 공개 API에 추가했습니다.
  • 기존 캡처 요청 옵션을 지우기 위해 Camera2CameraControl.clearCaptureRequestOptions를 추가했습니다.
  • 외부 이미지 처리 라이브러리(예: MLKit)와 함께 CameraController를 사용하기 위한 실험용 API를 추가했습니다.
  • 카메라에 고유한 CameraSelector를 반환하는 실험용 API CameraInfo#getCameraSelector()를 추가했습니다.
  • 몇몇 실험용 API를 공식적인 공개 API로 승격했습니다.
  • 실험용 API의 주석 @Experimental@RequiresOptIn으로 바꿨습니다. 실험용 API를 호출하려면 지원 중단된 androidx.annotation.experimental.UseExperimental 대신 androidx.annotation.OptIn을 사용하세요.
  • 다음 실험용 API를 공식 API로 승격했습니다. CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler()
  • @ExperimentalCameraFilter API
  • 실험용 노출 보정 API입니다.
  • camera-core, camera-lifecycle, camera-video의 실험용 UseCaseGroup를 승격했습니다. 표시 영역을 맞춤설정하는 ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection, ViewPort.Builder#setScaleType을 추가했습니다.
  • ExperimentalUseCaseGroupLifecycle을 공식적인 공개 API로 승격했습니다.
  • 기존 API의 변경사항
  • MediaStoreOutputOptions.getCollectionUri에서 Renamed MediaStoreOutputOptions.getCollection로.
  • 상세 출력을 줄이기 위해 ActiveRecording의 이름을 'Recording'으로 바꾸었습니다.
  • QualitySelector 크리에이터 API를 목록 기반 API로 변경했습니다.

버그 수정

  • 확장 프로그램 모드를 사용 설정하고 ImageCapture#CAPTURE_MODE_MAX_QUALITY 모드를 설정한 경우 발생하는 YuvToJpegProcessor EOFException 문제가 해결되었습니다.
  • 동영상 녹화가 종료되어 코덱 구성이 실패하는 문제가 해결되었습니다.
  • FHD로 녹화할 때 확장되는 미리보기/동영상 가로세로 비율을 수정했습니다.
  • 일부 기기에서 일시중지한 다음 다시 시작하면 오디오/동영상 싱크가 맞지 않는 문제가 해결되었습니다.
  • 플래시 모드가 auto이거나 저조도 환경에서 always_on일 때 tap-to-focus(startFocusAndMetering) 중에 플래시가 트리거되는 문제를 수정했습니다.

버전 1.1.0-rc02

2022년 6월 1일

androidx.camera:camera-*:1.1.0-rc02가 출시되었습니다. 버전 1.1.0-rc02에 포함된 커밋을 확인하세요.

버그 수정

  • ImageCapture.takePicture()NullPointerException이 수정되었습니다. (I92366, b/230454568, b/229766155)
  • CONTROL_ZOOM_RATIO_RANGE 특성을 가져올 때 AssertionError가 처리되지 않는 버그를 수정했습니다. (Ia248a, b/231701345)

버전 1.1.0-rc01

2022년 5월 11일

androidx.camera:camera-*:1.1.0-rc01이 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.

새로운 기능

  • camera-video, camera-view, camera-extension의 첫 번째 RC 버전이 출시되었습니다.

버그 수정

  • API 21~22를 사용하는 기기에서 VideoCapture<Recorder>가 바인딩되지 않을 때 동영상 코덱이 해제되지 않아 녹화 시 VideoCapture<Recorder>의 후속 사용이 실패하고 MediaCodec.CodecException이 발생하는 문제를 해결했습니다. (Ie7f68)
  • CameraExtensionsActivity의 캡처된 이미지가 ImageCaptureTest에서 삭제되지 않는 문제를 해결했습니다.

버전 1.1.0-beta03

2022년 4월 6일

androidx.camera:camera-*:1.1.0-beta03이 출시되었습니다. 버전 1.1.0-beta03에 포함된 커밋을 확인하세요.

API 변경사항

  • CaptureRequestOptions 생성자를 제한했습니다. (I261b6)
  • 외부 이미지 처리 라이브러리(예: MLKit)와 함께 CameraController를 사용하기 위한 실험용 API를 추가했습니다. (I4ea71)

버그 수정

  • 멀티 윈도우에서 기기를 회전한 후 활동이 다시 시작되지 않으면 PreviewView에서 미리보기가 가로로 바뀌는 문제가 수정되었습니다. (I1ea36, b/223488673)
  • (1) 우선순위가 높은 다른 앱이 다른 카메라를 열거나 (2) 기기가 삼성 Android 12 기기인 경우 포커스가 앱으로 다시 변경될 때 카메라를 다시 시작하지 못하는 멀티 윈도우 문제가 수정되었습니다. (I7e9f2)
  • 플래시 사용 가능 여부를 확인할 때 비정상 종료되는 기기에 대한 해결 방법이 포함되었습니다. 이러한 기기에서는 손전등을 사용할 수 없습니다. (If26a3, b/216667482)
  • 앱에서 확장 프로그램을 사용하고 proguard를 사용 설정할 때 발생하는 AbstractMethodError 문제가 수정되었습니다. (I7cbaf, b/222726805)
  • 검은색 미리보기 화면 문제가 발생하므로 Motorola razr 5G 기기에서 빛망울 효과 확장 모드를 강제로 사용 중지합니다. (I35d49)
  • 일부 삼성 기기의 경우 API 29 이전 버전에서 일시중지한 다음 다시 시작하면 오디오/동영상 싱크가 맞지 않는 문제가 해결되었습니다. (I64622, b/202798609, b/202798572)
  • Sony G3125에서 일시중지한 다음 다시 시작하면 오디오/동영상 싱크가 맞지 않는 문제가 해결되었습니다. (I2a1a5, b/202799148)
  • 녹음기에 InvalidConfigException이 있으면 비정상 종료가 발생하는 문제가 해결되었습니다. 하지만 앱이 비정상 종료되는 것만 방지되며 InvalidConfigException의 원인은 해결되지 않습니다. Recorder를 아직 구성할 수 없으면 애플리케이션에서 녹화를 시작할 때 오류 콜백이 수신됩니다. (I89c29, b/213617227)

외부 기여

  • test-coroutines-lib 이전으로 인해 :compose:ui:ui-test api(updateApi)가 업데이트되었습니다. (I3366d)

버전 1.1.0-beta02

2022년 2월 23일

androidx.camera:camera-*:1.1.0-beta02가 출시되었습니다. 버전 1.1.0-beta02에 포함된 커밋을 확인하세요.

API 변경사항

  • Camera2Interop를 통해 실제 카메라 ID를 지정하는 기능을 추가합니다. (I5aed8)

버그 수정

  • Oppo Find N에서 발생하는 확장된 미리보기 문제를 수정했습니다. (I7d004)
  • Galaxy J7 Prime에서 미리보기가 왜곡되는 문제를 수정했습니다. (I4c500)
  • 호환 가능한 비트 전송률을 사용하여 동영상 인코더를 찾습니다. (d969052)

버전 1.1.0-beta01

2022년 1월 26일

androidx.camera:camera-*:1.1.0-beta01이 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.

새로운 기능

  • 1.1.0-beta01부터 모든 CameraX 라이브러리가 동일한 버전 번호를 정렬합니다. 이를 통해 개발자가 버전을 훨씬 더 쉽게 추적하고 대규모 버전 호환성 매트릭스의 복잡성을 줄일 수 있습니다.

API 변경사항

  • 기존 캡처 요청 옵션을 지우기 위해 Camera2CameraControl.clearCaptureRequestOptions를 추가했습니다. (Ifa07d)

버그 수정

  • 일부 Android O(API 26) 이전 기기에서 동영상을 녹화할 때 발생하는 비정상 종료 문제를 수정했습니다. (I88fdf, b/212328261)
  • 삼성 기기의 전면 렌즈 카메라에서 cameraControl#startFocusAndMetering()을 사용할 때 발생하는 잘못된 AF 영역 문제를 수정했습니다. (Ifbf59, b/210548792)
  • Pixel 3a/Pixel 3a XL에서 토치를 플래시로 사용하여 어두운 환경에서 속도와 캡처된 이미지 품질을 개선합니다. (Ib12b6, b/211474332)
  • 카메라가 멀티 윈도우 모드에서 우선순위가 더 높은 다른 애플리케이션으로 인해 중단되고 포커스가 애플리케이션으로 다시 변경될 때 애플리케이션이 카메라를 다시 시작하도록 사용 설정했습니다. 일부 프레임워크 문제로 인해 포커스가 변경된 후 카메라가 다시 실행될 때까지 약간의 지연 시간(1초~10초 이상)이 발생할 수 있습니다. (I4d092)

버전 1.1.0-alpha12

2021년 12월 15일

androidx.camera:camera-*:1.1.0-alpha12가 출시되었습니다. 버전 1.1.0-alpha12에 포함된 커밋을 확인하세요.

API 변경사항

  • 내부 클래스/인터페이스에서 불필요한 @RequiresApi(21) 주석을 삭제했습니다. (I8e286, b/204917951)
  • QualitySelector의 품질 상수 및 대체 전략 상수를 클래스 객체로 표현하도록 변경했습니다. 예를 들어 QualitySelector.QUALITY_HDQuality.HD로, QualitySelector.FALLBACK_STRATEGY_LOWERFallbackStrategy.lowerQualityOrHigherThan(Quality)가 반환한 인스턴스로 변경됩니다. QualitySelector를 만드는 데 사용하는 API를 목록 기반 API로 변경했습니다. 새 API QualitySelector.fromOrderedList(List<Quality>)QualitySelector.Procedure가 만든 순서 대신 입력 품질 목록의 순서를 참조합니다. QualitySelector.Procedure 클래스는 삭제되었습니다. (I43343)
  • PendingRecording.withEventListener()가 삭제되고 이제 PendingRecording.start()에 이벤트 리스너를 전달해야 합니다. 이 이벤트 리스너 요구사항은 VideoRecordEvent.Finalize 이벤트에 보고되는 비동기 오류를 처리하기 위한 것입니다. (I1e71d)
  • 상세 출력을 줄이기 위해 ActiveRecording의 이름을 Recording으로 바꾸었습니다. (I77ceb)

버그 수정

  • Pixel 3a와 Pixel 3a XL의 경우, FLASH_AUTO 모드에서 캡처된 사진이 어두운 조건에서 과소 노출되는 문제가 해결되었습니다. (I13f19, b/205373142)
  • 미리보기 Resolution을 확인하려면 항상 최신 화면 크기를 사용하세요. (I4a694)
  • REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE이 없는 카메라를 필터링했습니다. REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE을 사용하는 카메라는 모든 카메라 기기에서 지원하는 최소한의 기능 집합을 포함합니다. REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE이 없는 카메라는 특수 기능을 지원하는 카메라일 수 있으며 표준 색상 출력을 지원하지 않습니다. CameraX는 이러한 카메라의 Preview, ImageCapture, ImageAnalysis 또는 VideoCapture 사용 사례를 지원할 수 없습니다. 따라서 이러한 카메라는 잘못된 사용을 방지하기 위해 필터링되어야 합니다. (Ib8cda)
  • 결과 집합이 비어 있으면 더 이상 CameraSelector#filter에서 IllegalArgumentException이 발생하지 않습니다. (I27804)
  • 이제 OEM 지정 프로파일에 따라 인코더 설정을 선택하는 데 더 스마트한 휴리스틱이 사용됩니다. (Iaeef0)
  • 고정된 미리보기는 Pixel 1에서 UHD 동영상 녹화를 시작한 후 색상 선을 인터레이스합니다. (I833c6, b/205340278)

버전 1.1.0-alpha11

2021년 11월 17일

androidx.camera:camera-*:1.1.0-alpha11이 출시되었습니다. 버전 1.1.0-alpha11에 포함된 커밋을 확인하세요.

API 변경사항

  • CameraSelector를 기준으로 CameraInfos 목록을 필터링하도록 CameraSelector#filter를 공개 API에 추가했습니다. (I105d0)
  • ImageAnalysis 구성을 위해 setOutputImageRotationEnabled API를 추가했습니다. 사용자가 YUV/RGB 이미지 버퍼의 회전을 사용 설정할 수 있습니다. 회전 각도는 이미지를 왜곡 없이 유지하도록 센서 회전과 타겟 회전을 기준으로 계산된 상대적 회전입니다.

  • ImageAnalysis 구성을 위해 setOutputImageRotationEnabled API를 추가했습니다. 사용자가 YUV/RGB 이미지 버퍼의 회전을 사용 설정할 수 있습니다. 회전 각도는 이미지를 왜곡 없이 유지하도록 센서 회전과 타겟 회전을 기준으로 계산된 상대적 회전입니다.

    ImageInfo에 getSensorToBufferTransformMatrix API를 추가합니다. 반환된 행렬은 센서 좌표에서 버퍼 좌표로의 매핑, 즉 CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE 값에서 (0, 0, image.getWidth, image.getHeight)까지의 매핑입니다. 이 행렬은 하나의 {UseCase}에서 다른 {UseCase}로 좌표를 매핑하는 데 사용될 수 있습니다. 예를 들어 ImageAnalysis로 감지된 얼굴의 좌표를 미리보기에 매핑합니다. (I9ff1e)

  • 사진을 찍을 때 출력 JPEG 이미지 압축 품질을 변경할 수 있도록 새로운 API인 ImageCapture.Builder#setJpegQuality를 추가했습니다. (I8dcf4)

  • MediaStoreOutputOptions.getCollection의 이름을 MediaStoreOutputOptions.getCollectionUri로 바꾸었습니다. (I16639)

버그 수정

  • 플래시 모드가 auto이거나 저조도 환경에서 always_on일 때 tap-to-focus(startFocusAndMetering) 중에 플래시가 트리거되는 문제를 수정했습니다. (Id4c11)
  • 지연 시간을 줄이기 위해 MINIMIZE_LATENCY 모드에서 Pixel 2 XL/Pixel 3 XL의 HDR+를 사용 중지했습니다. (Ib6270, b/203505523)

외부 기여

버전 1.1.0-alpha10

2021년 10월 13일

androidx.camera:camera-*:1.1.0-alpha10이 출시되었습니다. 버전 1.1.0-alpha10에 포함된 커밋을 확인하세요.

새로운 기능

  • androidx.camera:camera-video:1.1.0-alpha10이 Video의 첫 번째 알파 버전으로 공식 출시되었습니다. 향후 릴리스에서 몇 가지 알려진 문제가 해결될 예정입니다.

API 변경사항

  • 모든 CameraX 클래스에 @RequiresApi(21) 주석을 추가하고 AndroidManifest.xml에서 minSdkVersion을 삭제했습니다. 이를 통해 minSdkVersion이 21 미만이지만 API 21 이상을 사용하는 코드 경로를 조건부로 사용하려는 애플리케이션에 camera-core를 쉽게 통합할 수 있습니다. minSdkVersion 21 이상을 사용하는 애플리케이션에서는 이 변경으로 인한 별도의 작업이 필요하지 않습니다. (Ie7f2e, b/200599470)

버그 수정

  • InitializationException을 발생시켜 앱이 CameraCharacteristics를 만들 때 발생하는 AssertionError를 적절하게 처리할 수 있게 합니다. (Ibec79)

버전 1.1.0-alpha09

2021년 9월 29일

androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09androidx.camera:camera-lifecycle:1.1.0-alpha09가 출시되었습니다. 버전 1.1.0-alpha09에 포함된 커밋을 확인하세요.

API 변경사항

  • 더 이상 실험용 API가 아니므로 ExperimentalUseCaseGroup 주석이 삭제되었습니다. (I01ef5)

버그 수정

  • MAXIMIZE_QUALITY 모드에서 캡처된 사진이 블러 처리되는 문제를 해결했습니다. (I173a9, b/193823892)
  • 어두운 환경에서 플래시 사용/자동 상태로 사진을 찍은 후 카메라가 멈추는 삼성 Galaxy J5 문제를 해결했습니다. (I3aab9)
  • ImageCapture에 자르기가 필요한 경우 설정된 캡처 모드에 따라 지정된 JPEG 품질 수준으로 잘린 이미지 출력물을 압축하세요. 캡처 모드가 CAPTURE_MODE_MINIMIZE_LATENCY이면 JPEG 압축 품질이 95가 됩니다. 캡처 모드가 CAPTURE_MODE_MAXIMIZE_QUALITY이면 JPEG 압축 품질이 100이 됩니다. (Ieb37c, b/142856426)

버전 1.1.0-alpha08

2021년 8월 18일

androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08androidx.camera:camera-lifecycle:1.1.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

새로운 기능

  • 이미지 분석 구성을 위한 setOutputImageFormat API를 추가합니다. 사용자는 ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 또는 ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888을 선택할 수 있습니다. 기본적으로 ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888이 선택됩니다. (I7902d)

API 변경사항

  • 더 이상 실험용 API가 아니므로 ExperimentalUseCaseGroupLifecycle 주석이 삭제되었습니다. (I17b85)

버그 수정

  • Huawei P20 Lite에서 미리보기 화면이 너무 밝은 문제를 해결했습니다. 이 문제는 특수한 미리보기 해상도가 큰 확대 값과 함께 사용되는 경우에만 발생합니다. (Idefce, b/192129158)
  • 플래시 모드를 FLASH_MODE_ON으로 설정한 후 바로 사진을 찍을 경우 일부 기기에서 플래시가 작동하지 않는 문제를 해결했습니다. (Ieb49b)
  • VideoCapture, ImageCapture, Preview가 바인딩된 경우 사진을 찍을 때 미리보기가 잠시 중단되는 문제를 해결했습니다. (I56197, b/193864120)
  • ImageAnalysis에서 1080p보다 큰 해상도를 선택할 수 있습니다. 제한된 수준 이상의 기기가 Preview 및 ImageCapture와 함께 바인딩된 경우 ImageAnalysis의 녹화 크기 해상도를 지원할 수 있습니다. 단, ImageCapture에 선택한 해상도도 녹화 크기 해상도여야 합니다. ImageAnalysis의 녹화 크기 해상도를 선택하려면 녹화 크기 타겟 해상도를 ImageCapture와 ImageAnalysis에 모두 설정해야 합니다. 이는 애플리케이션이 균형을 명확하게 인식하고, 최대 해상도를 갖는 ImageCapture보다 큰 해상도를 갖는 ImageAnalysis를 선호한다는 의미입니다. 녹화 정의, 최대 크기 등 자세한 내용은 https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture를 참고하세요. 녹화 크기는 CamcorderProfile에 의해 결정되며 카메라 기기에서 지원되는 최대 녹화 해상도입니다. 최대 크기는 카메라 기기의 관련 형식에서 지원되는 최대 출력 해상도 또는 StreamConfigurationMap.getOutputSizes(int)의 타겟을 나타냅니다. (I1ee97, b/192911449)
  • 캡처된 이미지에 EXIF (데이터) 정보를 추가합니다. (I01ff0, b/193342619)
  • 저장 위치가 파일인 경우 ImageCapture에서 저장된 이미지의 URI를 반환합니다. (Ib5b49, b/149241379)
  • 여러 기기에서 플래시를 켠 상태로 캡처한 이미지가 어둡게 표시되는 문제를 해결했습니다. (I4e510)

버전 1.1.0-alpha07

2021년 7월 21일

androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07, androidx.camera:camera-lifecycle:1.1.0-alpha07이 출시되었습니다. 버전 1.1.0-alpha07에 포함된 커밋을 확인하세요.

버그 수정

  • 어두운 환경에서 플래시를 사용 설정/자동 설정하여 사진을 찍은 후 카메라가 멈추는 삼성 Galaxy Note 5의 문제가 해결되었습니다. (If6871)
  • 확장 프로그램 모드를 사용 설정하고 ImageCapture#CAPTURE_MODE_MAX_QUALITY 모드를 설정한 경우 발생하는 YuvToJpegProcessor EOFException 문제가 해결되었습니다. (I538bd, b/192017012)

버전 1.1.0-alpha06

2021년 6월 30일

androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06androidx.camera:camera-lifecycle:1.1.0-alpha06이 출시되었습니다. 버전 1.1.0-alpha06에 포함된 커밋을 확인하세요.

API 변경사항

  • camera-core용 실험용 노출 보정 API를 승격합니다. (I08ee8)
  • 애플리케이션이 현재 카메라에서 주어진 FocusMeteringAction의 지원 여부를 확인할 수 있는 API isFocusMeteringSupported를 CameraInfo에 추가했습니다. (Ib45ae, b/188606490)
  • 미리보기, ImageCapture, ImageAnalysis의 해상도 정보를 제공하려고 getResolutionInfo API를 노출했습니다. (I2b613, b/188600718)
  • 다음 실험용 API를 공식 API로 승격했습니다. CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler() (I2ade2)
  • 일련의 카메라에 액세스할 수 있도록 CameraProvider 인터페이스를 노출했습니다. (I1a7b1)
  • camera-core, camera-lifecycle, camera-video의 실험용 UseCaseGroup API를 승격합니다. 표시 영역을 맞춤설정하는 ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection, ViewPort.Builder#setScaleType을 추가했습니다. (I7cee8)

버전 1.1.0-alpha05

2021년 6월 2일

androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05androidx.camera:camera-lifecycle:1.1.0-alpha05가 출시되었습니다. 버전 1.1.0-alpha05에 포함된 커밋을 확인하세요.

API 변경사항

  • Camera2CameraFilter 클래스를 삭제했습니다. CameraFilter로 카메라를 선택하고 필요하다면 Camera2CameraInfo를 통해 CameraCharacteristics 또는 기타 Camera2 관련 정보를 검색하도록 제안합니다. (Ib887c)
  • ExperimentalCameraFilter API가 이제 실험 단계를 벗어나 공식 API가 됩니다. 주석이 달린 OptIn 없이 사용할 수 있습니다. (I4bc94)
  • CameraInfo#getCameraState()를 통해 노출되는 카메라 상태 API를 추가했습니다. (Ia86b4)
  • 카메라에 고유한 CameraSelector를 반환하는 실험용 API CameraInfo#getCameraSelector()를 추가했습니다. (I77f9f)

버그 수정

  • setZoomRatio와 setLinearZoom에 반환된 ListenableFuture가 일부 Android 11 기기에서 완료되지 않는 문제를 수정했습니다. (I716d7)
  • 카메라 스위치 속도를 높이고 카메라 기기의 오류 발생률을 줄입니다. (I34c99)
  • ExperimentalUseCaseGroupLifecycle을 ExperimentalUseCaseGroup으로 대체했습니다. (I3b2ef, b/159033688)

버전 1.1.0-alpha04

2021년 4월 21일

androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04androidx.camera:camera-lifecycle:1.1.0-alpha04가 출시되었습니다. 버전 1.1.0-alpha04에 포함된 커밋을 확인하세요.

버그 수정

  • 동일한 컬렉션에 동시에 액세스하는 여러 스레드로 인한 메모리 누수 문제를 해결했습니다. 메모리 누수가 발생할 경우 미리보기 인스턴스에서 활동 또는 프래그먼트가 남아 있을 수 있습니다. (I7b4b8)
  • 실험용 API의 주석 @Experimental@RequiresOptIn으로 바꿨습니다. 실험용 API를 호출하려면 지원 중단된 androidx.annotation.experimental.UseExperimental 대신 androidx.annotation.OptIn을 사용하세요. (Iff226)
  • 삼성 Galaxy S7에서 플래시 켜짐/자동 상태일 때 빛 바랜 이미지가 촬영되는 ImageCapture의 문제를 해결했습니다. (I30001)
  • CameraInfo를 통해 노출될 CameraState API를 추가했습니다. (I75392)

버전 1.1.0-alpha03

2021년 3월 24일

androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03androidx.camera:camera-lifecycle:1.1.0-alpha03이 출시되었습니다. 버전 1.1.0-alpha03에 포함된 커밋을 확인하세요.

버그 수정

  • 확장 프로그램 모드가 사용 설정되면 ImageCapture#OnImageCapturedCallback의 JPEG 형식을 출력합니다. (I0d7b1)
  • UMIDIGI BISON 기기의 초기화 실패 문제를 해결했습니다. (I57d9e, b/180818665)
  • PreviewView에서 삼성 A3의 미리보기가 늘어나는 문제를 해결했습니다. (Iacb30, b/180121821)

버전 1.1.0-alpha02

2021년 2월 24일

androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02androidx.camera:camera-lifecycle:1.1.0-alpha02이 출시되었습니다. 버전 1.1.0-alpha02에 포함된 커밋을 확인하세요.

API 변경사항

  • 기기의 모든 카메라 또는 CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector)에 제공되는 CameraSelector에서 선택한 카메라 등, 사용 가능한 카메라에 관한 정보를 직접 검색하는 API ProcessCameraProvider.getAvailableCameraInfos()를 추가했습니다. (Ieac08)

버그 수정

  • 이제 CameraX가 최초 시도에서 카메라를 강제로 열려고 시도합니다. 이에 따라, 앱의 우선순위가 높은 경우 CameraX에서 다른 카메라 클라이언트로부터 카메라를 가로챌 수도 있습니다. (Iab069, b/175820568)
  • CameraXConfig에서 setAvailableCamerasLimiter를 사용할 때 Robolectric 테스트에 실패하는 문제를 해결했습니다. (Ice307)
  • 이 변경으로 인해, ImageAnalysis에서 이미지 큐가 최대 한도에 도달하면 예외가 포착됩니다. 따라서 비정상 종료가 발생하는 대신, 미리보기 등의 다른 사용 사례가 정지되거나 느려질 수 있습니다. (Ic12da, b/175851631)
  • 미리보기 또는 ImageCapture가 바인딩된 경우에만 오류를 보고하도록 ExtensionsErrorListener를 수정했습니다. (I5ae39)
  • 사진을 찍기 전에 이미지 저장 위치의 유효성 검사를 없애 ImageCapture 성능 저하 문제를 해결했습니다. 이렇게 변경한 후에는 저장 위치가 잘못된 경우 실패 응답을 가져오는 데 시간이 더 오래 걸립니다. 사진을 찍은 후 이미지를 저장하려고 시도하기 때문입니다. (I1fd4e, b/177061560)
  • 'File' 유형의 OutputFileOptions로 ImageCapture 성능 저하를 해결했습니다. (I5164a, b/177061560)
  • 라이브러리 코드에서 ProcessCameraProvider.configureInstance(...)를 사용하지 않도록 권장하는 내용으로 문서를 업데이트했습니다. (Ib8a9f)

버전 1.1.0-alpha01

2021년 1월 27일

androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01androidx.camera:camera-lifecycle:1.1.0-alpha01이 출시되었습니다. 버전 1.1.0-alpha01에 포함된 커밋을 확인하세요.

버그 수정

  • SM-G930T 후면 카메라의 JPEG 이미지 데이터가 간헐적으로 손상되는 문제에 관한 해결 방법을 포함했습니다. (I52001, b/159831206)
  • 모든 미리보기 지원 크기가 640x480보다 작고 디스플레이 크기가 640x480보다 클 때 발생하는 IllegalArgumentException 문제를 수정했습니다. (I2a63c, b/150506192)
  • 이제 public.xml 등을 통해 명시적으로 선언된 공개 리소스가 없는 라이브러리의 리소스는 기본적으로 비공개입니다. (Ia1dcc, b/170882230)

Camera-Camera2, Camera-Core, Camera-Lifecycle 버전 1.0.2

버전 1.0.2

2021년 9월 29일

androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2androidx.camera:camera-lifecycle:1.0.2가 출시되었습니다. 버전 1.0.2에 포함된 커밋을 확인하세요.

버그 수정

  • MAXIMIZE_QUALITY 모드에서 캡처된 사진이 블러 처리되는 문제를 해결했습니다. (I173a9, b/193823892)
  • 여러 기기에서 플래시를 사용하여 캡처한 이미지가 어둡게 표시되는 문제를 해결했습니다. (I4e510)

Camera-Camera2, Camera-Core, Camera-Lifecycle 버전 1.0.1

버전 1.0.1

2021년 7월 21일

androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1androidx.camera:camera-lifecycle:1.0.1이 출시되었습니다. 버전 1.0.1에 포함된 커밋을 확인하세요.

버그 수정

  • setZoomRatiosetLinearZoom에서 반환된 ListenableFuture가 일부 Android 11 기기에서 완료되지 않는 문제가 해결되었습니다. (I716d7)

  • 일부 기기에서 카메라가 카메라 닫기 상태에서 멈추고 미리보기가 검게 나타나는 문제가 해결되었습니다. (I34c99)

Camera-Camera2, Camera-Core, Camera-Lifecycle 버전 1.0.0

버전 1.0.0

2021년 5월 5일

androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0androidx.camera:camera-lifecycle:1.0.0이 출시되었습니다. 버전 1.0.0에 포함된 커밋을 확인하세요.

1.0.0의 주요 기능

  • CameraX가 Preview, ImageCapture, Analysis를 지원합니다.
  • CameraX가 사용하기 쉬운 API 내에서 카메라 수명 주기를 관리합니다.
  • CameraX의 목표는 Android 카메라 생태계의 여러 문제를 해결하는 호환성 레이어를 제공하는 것입니다.

알려진 문제

버전 1.0.0-rc05

2021년 4월 21일

androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05androidx.camera:camera-lifecycle:1.0.0-rc05가 출시되었습니다. 버전 1.0.0-rc05에 포함된 커밋을 확인하세요.

버그 수정

  • 삼성 Galaxy S7에서 플래시 켜짐/자동 상태일 때 빛 바랜 이미지가 촬영되는 ImageCapture의 문제를 해결했습니다. (I30001)

버전 1.0.0-rc04

2021년 3월 24일

androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04androidx.camera:camera-lifecycle:1.0.0-rc04가 출시되었습니다. 버전 1.0.0-rc04에 포함된 커밋을 확인하세요.

버그 수정

  • UMIDIGI BISON 기기의 초기화 실패 문제를 해결했습니다. (I57d9e, b/180818665)

버전 1.0.0-rc03

2021년 2월 24일

androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03androidx.camera:camera-lifecycle:1.0.0-rc03이 출시되었습니다. 버전 1.0.0-rc03에 포함된 커밋을 확인하세요.

버그 수정

  • ProcessCameraProvider#getInstance의 문서에서 형식 오류를 수정했습니다.
  • CameraXConfig에서 setAvailableCamerasLimiter를 사용할 때 Robolectric 테스트에 실패하는 문제를 해결했습니다.
  • 사진을 찍기 전에 이미지 저장 위치의 유효성 검사를 없애 ImageCapture 성능 저하 문제를 해결했습니다. 이렇게 변경한 후에는 저장 위치가 잘못된 경우 실패 응답을 가져오는 데 시간이 더 오래 걸립니다. 사진을 찍은 후 이미지를 저장하려고 하기 때문입니다.
  • 이 변경으로 인해, ImageAnalysis에서 이미지 큐가 최대 한도에 도달하면 예외가 포착됩니다. 따라서 비정상 종료가 발생하는 대신, 미리보기 등의 다른 사용 사례가 정지되거나 느려질 수 있습니다.
  • SM-G930T 후면 카메라의 JPEG 이미지 데이터가 간헐적으로 손상되는 문제에 관한 해결 방법을 포함했습니다. (I52001, b/159831206)
  • 이 변경으로 인해, ImageAnalysis에서 이미지 큐가 최대 한도에 도달하면 예외가 포착됩니다. 따라서 비정상 종료가 발생하는 대신, 미리보기 등의 다른 사용 사례가 정지되거나 느려질 수 있습니다. (Ic12da, b/175851631)
  • CameraXConfig에서 setAvailableCamerasLimiter를 사용할 때 Robolectric 테스트에 실패하는 문제를 해결했습니다. (Ice307)
  • 사진을 찍기 전에 이미지 저장 위치의 유효성 검사를 없애 ImageCapture 성능 저하 문제를 해결했습니다. 이렇게 변경한 후에는 저장 위치가 잘못된 경우 실패 응답을 가져오는 데 시간이 더 오래 걸립니다. 사진을 찍은 후 이미지를 저장하려고 시도하기 때문입니다. (I1fd4e, b/177061560)
  • 'File' 유형의 OutputFileOptions로 ImageCapture 성능 저하를 해결했습니다. (I5164a, b/177061560)

버전 1.0.0-rc02

2021년 1월 27일

androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02androidx.camera:camera-lifecycle:1.0.0-rc02가 출시되었습니다. 버전 1.0.0-rc02에 포함된 커밋을 확인하세요.

버그 수정

  • 모든 미리보기 지원 크기가 640x480보다 작고 디스플레이 크기가 640x480보다 클 때 발생하는 IllegalArgumentException 문제를 수정했습니다. (b/150506192)
  • 카메라 다시 열기 시도 횟수를 제한합니다. 카메라를 열 때 특정 문제에서 복구를 시도하는 동안 CameraX에서는 카메라를 다시 열기 위한 시도를 더 이상 무한정 반복하지 않고 10초 동안 다시 시도한 후 중지합니다. (I435d2)

  • 모든 미리보기 지원 크기가 640x480보다 작고 디스플레이 크기가 640x480보다 클 때 발생하는 IllegalArgumentException 문제를 수정했습니다. (I2a63c, b/150506192)

버전 1.0.0-rc01

2020년 12월 16일

androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01androidx.camera:camera-lifecycle:1.0.0-rc01이 출시되었습니다. 버전 1.0.0-rc01에 포함된 커밋을 확인하세요.

API 변경사항

  • CameraInfo를 사용하도록 CameraFilter와 Camera2Filter를 변경했습니다. (I6883d)
  • 실험용 클래스 Camera2CameraControl을 추가하여 Camera2 API와 동적으로 상호 운용할 수 있습니다. (I45cf3)
  • Camera2CameraInfo#fromCameraInfo를 #from으로 이름을 바꿨습니다. (Ia2bd6)
  • 사용되지 않는 카메라의 초기화를 방지하여 앱이 초기화 지연 시간을 최적화할 수 있도록 실험용 setAvailableCamerasLimiter API를 CameraXConfig에 추가했습니다. (I6cf88)
  • CameraX 로그의 최소 로깅 수준을 설정할 수 있도록 실험용 메서드 CameraXConfig.Builder#setMinimumLoggingLevel()을 추가했습니다. 설정하지 않으면 기본값은 Log#DEBUG입니다. (Ic3245)

버그 수정

  • SM-G930V 후면 카메라의 JPEG 이미지 데이터가 간헐적으로 손상되는 문제에 관한 해결 방법을 포함했습니다. (I5aca5, b/159831206)
  • Samsung SM-A716 기기에서 플래시가 항상 켜져 있고 환경이 어두울 때 사진을 찍으면 결과가 수신되지 않는 문제를 수정했습니다. (If98b2, b/172036589)
  • Preview.setSurfaceProvider(null)를 호출하여 미리보기를 중지할 수 없는 문제를 수정했습니다. (I3ac18)
  • 일부 기기에서 4:3 이미지를 캡처할 때 발생하는 방향 문제를 수정했습니다. (I0e3fb, b/171492111)

Camera Camera2, Core, Lifecycle 버전 1.0.0-beta12

2020년 11월 11일

androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12androidx.camera:camera-lifecycle:1.0.0-beta12가 출시되었습니다. 버전 1.0.0-beta012에 포함된 커밋을 확인하세요.

버그 수정

  • Samsung A3 기기에서 자동 플래시 AE 모드로 사진을 찍을 때 발생하는 비정상 종료 문제를 수정하기 위해 Samsung A3 기기의 자동 플래시를 사용 중지했습니다. (Ia5fe3, b/157535165)
  • Android L(API 수준 21 및 22)을 실행하는 Nexus 4 기기에서 미리보기가 확장되던 문제를 수정했습니다. (I4d407, b/158749159)
  • OnImageCapturedCallback#onCaptureSuccess 기본 클래스 구현이 더 이상 이미지를 닫지 않습니다. 개발자에게 예기치 않은 동작이 발생하지 않도록 하기 위함입니다. 개발자는 super.onCaptureSuccess에 의존하여 이미지를 닫지 않아야 합니다. (Ifbf9c)
  • 실험용 주석의 androidx 변형이 Kotlin과의 패리티를 제공하기 위해 지원 중단되었습니다. RequiresOptIn 주석으로 대체했으며 새 Kotlin 주석과 새 androidx 변형을 모두 지원하도록 자바 관련 린터를 업데이트했습니다. (I52495, b/151331381)

Camera-Camera2 버전 1.0.0-beta11

2020년 10월 14일

androidx.camera:camera-camera2:1.0.0-beta11이 출시되었습니다. 버전 1.0.0-beta11에 포함된 커밋을 확인하세요.

새로운 기능

  • 유효한 CONTROL_ZOOM_RATIO_RANGE가 포함된 Android 11 이상 기기에서 확대/축소하도록 Android 11 CONTROL_ZOOM_RATIO API를 지원합니다. (I62cc6)

버그 수정

  • 카메라 ID가 정수가 아닌 카메라 ID일 때 발생한 NumberFormatException 문제를 수정했습니다. (Ib2228)
  • CameraX 초기화 및 bindToLifecycle의 지연 시간을 개선했습니다. (I61dc5)
  • UseCases 생성을 위해 CameraX 초기화를 완료하지 않아도 됩니다. 공개 API의 경우 ProcessCameraProvider.bindToLifecycle()인 카메라 인스턴스에 연결되면 모든 구현 관련 구성이 UseCase에 설정됩니다. (Ia5411)
  • targetRotation이 Builder 또는 UseCase에 설정되지 않은 경우 <UseCase>.getTargetRotation()이 카메라 인스턴스에 연결되기 전에 호출되면 Surface.ROTATION_0을 반환합니다. (I80fcd)

Camera-Core 버전 1.0.0-beta11

2020년 10월 14일

androidx.camera:camera-core:1.0.0-beta11이 출시되었습니다. 버전 1.0.0-beta11에 포함된 커밋을 확인하세요.

새로운 기능 - 유효한 CONTROL_ZOOM_RATIO_RANGE가 포함된 Android 11 이상 기기에서 확대/축소하도록 Android 11 CONTROL_ZOOM_RATIO API를 지원합니다. (I62cc6)

버그 수정

  • 카메라 ID가 정수가 아닌 카메라 ID일 때 발생한 NumberFormatException 문제를 수정했습니다. (Ib2228)
  • UseCases 생성을 위해 CameraX 초기화를 완료하지 않아도 됩니다. 공개 API의 경우 ProcessCameraProvider.bindToLifecycle()인 카메라 인스턴스에 연결되면 모든 구현 관련 구성이 UseCase에 설정됩니다. (Ia5411)
  • targetRotation이 Builder 또는 UseCase에 설정되지 않은 경우 <UseCase>.getTargetRotation()이 카메라 인스턴스에 연결되기 전에 호출되면 Surface.ROTATION_0을 반환합니다. (I80fcd)

Camera-Core 버전 1.0.0-beta10

2020년 9월 23일

androidx.camera:camera-core:1.0.0-beta10이 출시되었습니다. 버전 1.0.0-beta10에 포함된 커밋을 확인하세요.

버그 수정

  • 이미지 캡처 파일의 저장 위치 확인과 관련된 버그를 수정했습니다. (I8c565, b/167697553)

Camera-Camera2 버전 1.0.0-beta10

2020년 9월 23일

androidx.camera:camera-camera2:1.0.0-beta10이 출시되었습니다. 버전 1.0.0-beta10에 포함된 커밋을 확인하세요.

버그 수정

Camera-Camera2 버전 1.0.0-beta09

2020년 9월 16일

androidx.camera:camera-camera2:1.0.0-beta09가 출시되었습니다. 버전 1.0.0-beta09에 포함된 커밋을 확인하세요.

API 변경사항

  • 정적 메서드를 제공하는 대신 Camera2CameraInfo는 Camera2 관련 정보를 검색하기 위해 생성 시 CameraInfo 인스턴스를 가져옵니다. (I5b844)

버그 수정

  • 태블릿 기기에서 타겟의 가로세로 비율 문제를 수정했습니다. 타겟의 가로세로 비율이 AspectRatio.RATIO_16_9로 설정되어 있으면 16:9 크기를 선택해야 합니다. (Ib7fcf, b/151969438)
  • InitializationException을 발생시켜 앱이 CameraCharacteristics를 만들 때 발생하는 AssertionError를 적절하게 처리할 수 있게 합니다. (I89c8c, b/160524721)
  • ExposerCompensation을 위한 실험용 인터페이스를 추가했습니다. (If96c7)

Camera-Core 버전 1.0.0-beta09

2020년 9월 16일

androidx.camera:camera-core:1.0.0-beta09가 출시되었습니다. 버전 1.0.0-beta09에 포함된 커밋을 확인하세요.

API 변경사항

  • UseCaseGroup에서 표시 영역이 null이 아닌 것으로 표시되는 버그를 수정했습니다. 개발자는 표시 영역을 설정하지 않고도 표시 영역을 만들 수 있어야 합니다. (Ie3d2e)
  • ExposureCompensation을 위한 실험용 인터페이스를 추가했습니다. (If96c7)
  • 미리보기에서 임의의 타겟 회전을 허용합니다. 변환 정보가 계산되고 새 TranformationInfoListener 콜백을 통해 사용자에게 즉시 반환됩니다. (I21470)

버그 수정

  • 일부 기기에서 플래시가 꺼지지 않는 문제를 수정했습니다. 사진을 찍기 위해 플래시 모드를 FLASH_MODE_ON으로 설정하고 플래시가 실행된 후 FLASH_MODE_OFF로 변경하면 발생합니다. 사용 설정된 토치 모드의 증상과 비슷합니다. (Ib4451, b/162568128)
  • 확장 프로그램 효과가 사용 설정되고 공급업체 라이브러리 구현이 출력 표면에서 특수 프로세스를 실행해야 하는 경우 PreviewView에서 TextureView를 사용하도록 강제했습니다. (I0c3cc)
  • 활동/프래그먼트 컨텍스트가 ProcessCameraProvider.getInstance(Context)로 전달될 때 활동/프래그먼트 누수 문제를 수정했습니다.

알려진 문제

  • ViewPort가 설정된 경우 HAL에서 이미지 버퍼를 회전하는 기기에서 ImageCapture의 자르기 rect가 정확하지 않을 수 있습니다. 이 문제는 다음 버전에서 수정될 예정입니다.

Camera-Camera2 버전 1.0.0-beta08

2020년 8월 19일

androidx.camera:camera-camera2:1.0.0-beta08이 출시되었습니다. 버전 1.0.0-beta08에 포함된 커밋을 확인하세요.

버그 수정

  • 기본 스레드에서 빠르게 실행되도록 bindToLifecycle이 최적화되었습니다. (I1d57e)
  • DisplayOrientedMeteringPointFactory는 CameraSelector 대신 CameraInfo 인스턴스를 가져오므로 팩토리에서 포인트를 생성할 카메라의 직접 매핑이 있습니다. DisplayOrientedMeteringPointFactory를 사용하는 모든 클래스도 CameraSelector 대신 CameraInfo 인스턴스를 가져옵니다. (I400c1)
  • 타겟 해상도 설정이 2016x1080이고 다른 1920x1080 16:9 크기가 지원되는 경우 16:9 mod16 크기(864x480)가 선택되는 자동 해상도 가로세로 비율 크기 그룹화 문제가 수정되었습니다. (I53167, b/159363774)
  • 경합 상태로 작업할 수 없는 CameraControl 문제가 수정되었습니다. (I2279f, b/152333890, b/160714166)

Camera-Core 버전 1.0.0-beta08

2020년 8월 19일

androidx.camera:camera-core:1.0.0-beta08이 출시되었습니다. 버전 1.0.0-beta08에 포함된 커밋을 확인하세요.

API 변경사항

  • DisplayOrientedMeteringPointFactoryCameraSelector 대신 CameraInfo 인스턴스를 가져오므로 팩토리에서 포인트를 생성할 카메라의 직접 매핑이 있습니다. DisplayOrientedMeteringPointFactory를 사용하는 모든 클래스도 CameraSelector 대신 CameraInfo 인스턴스를 가져옵니다. (I400c1)

버그 수정

  • 이미지 캡처의 경우 카메라 방향에 기반하여 메타데이터에서 수평 뒤집기 플래그를 덮어씁니다. (I28499)
  • Context.getApplicationContext()에서 애플리케이션 객체를 반환하지 않는 컨텍스트를 사용할 때 초기화가 더 이상 비정상 종료되지 않습니다. (I3d3c9, b/160817073)

Camera-Camera2 버전 1.0.0-beta07

2020년 7월 22일

androidx.camera:camera-camera2:1.0.0-beta07이 출시되었습니다. 버전 1.0.0-beta07에 포함된 커밋을 확인하세요.

버그 수정

  • Android 5.0 레거시 기기에서 미리보기가 확장되는 문제가 해결되었습니다. (I0c03a)
  • 일부 기기에서 WYSIWYG 문제를 야기하는 JPEG 지원 크기를 제외했습니다. (Ib5128)

Camera-Core 버전 1.0.0-beta07

2020년 7월 22일

androidx.camera:camera-core:1.0.0-beta07이 출시되었습니다. 버전 1.0.0-beta07에 포함된 커밋을 확인하세요.

API 변경사항

  • FIT_CENTER, FIT_START, FIT_END fit 스타일이 FIT와 병합됩니다. FIT는 반환된 자르기 rect가 가능한 최대 센서 rect임을 의미합니다. (Ia73c3)
  • 미리보기의 자르기 rect는 표시 영역을 통해 구성됩니다. 자르기 rect에 포함된 영역만 최종 사용자에게 표시됩니다. (I142a4)

버그 수정

  • Android 5.0 레거시 기기에서 미리보기가 확장되는 문제가 해결되었습니다. (I0c03a)
  • 사용 사례의 연결을 해제할 때 발생하는 ConcurrentModificationException 예외 문제가 해결되었습니다. (I371c0)

Camera-Camera2 버전 1.0.0-beta06

2020년 6월 24일

androidx.camera:camera-camera2:1.0.0-beta06이 출시되었습니다. 버전 1.0.0-beta06에 포함된 커밋을 확인하세요.

API 변경사항

  • 카메라 ID와 CameraCharacteristics로 카메라를 필터링하기 위한 실험용 인터페이스가 추가되었습니다. (I28f61)

버그 수정

  • startFocusAndMetering이 Samsung Galaxy S7에 성공적으로 초점을 맞추지 못하는 문제가 수정되었습니다. (If3be7, b/159039233)
  • 앱을 종료한 후 카메라를 닫을 수 없는 문제가 수정되었습니다. (I7a7b3)
  • PreviewView의 SurfaceView 구현을 사용할 때 반복되는 카메라 전환으로 인해 미리보기가 중단되는 문제를 수정했습니다. (I920ce)
  • 지정된 MeteringPoint에서 유효한 측정 직사각형을 생성할 수 없으면 CameraControl#startFocusAndMetering이 실패합니다. (Id53ce)

Camera-Core 버전 1.0.0-beta06

2020년 6월 24일

androidx.camera:camera-core:1.0.0-beta06이 출시되었습니다. 버전 1.0.0-beta06에 포함된 커밋을 확인하세요.

API 변경사항

  • 카메라 ID와 CameraCharacteristics로 카메라를 필터링하기 위한 실험용 인터페이스가 추가되었습니다. (I28f61)

버그 수정

  • 이제 ProcessCameraProvider#getInstance()를 호출하기 전에 ProcessCameraProvider#configureInstance()로 CameraX를 구성할 수 있습니다. 이렇게 하면 앱의 애플리케이션 클래스에서 CameraXConfig.Provider를 구현하지 않고도 CameraXConfig를 맞춤설정할 수 있습니다. (Ia1a8d)
  • 지정된 MeteringPoint에서 유효한 측정 직사각형을 생성할 수 없으면 CameraControl#startFocusAndMetering이 실패합니다. (Id53ce)

Camera-Camera2 버전 1.0.0-beta05

2020년 6월 10일

androidx.camera:camera-camera2:1.0.0-beta05가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.

버그 수정

  • 스마트폰이 방해 금지 모드일 때 CameraX를 초기화하면 앱 시작 시 비정상적으로 종료되는 문제를 해결했습니다. 애플리케이션이 다운되는 대신 CameraUnavailableException이 포함된 InitializationExceptionListenableFuture라는 초기화 결과로 설정됩니다. (I9909a, b/149413835)
  • CONTROL_AF_STATE가 null인 기기에서 startFocusAndMetering을 호출할 때 발생하는 비정상 종료 문제를 해결했습니다. (Ife55e, b/157084254)

Camera-Core 버전 1.0.0-beta05

2020년 6월 10일

androidx.camera:camera-core:1.0.0-beta05가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.

API 변경사항

  • 스마트폰이 방해 금지 모드일 때 CameraX를 초기화하면 앱 시작 시 비정상적으로 종료되는 문제를 해결했습니다. 애플리케이션이 다운되는 대신 CameraUnavailableException이 포함된 InitializationExceptionListenableFuture라는 초기화 결과로 설정됩니다. (I9909a, b/149413835)

버그 수정

  • setTargetResolutionsetTargetRotation의 javadocs가 업데이트되었습니다. (Iai16f)

Camera-Camera2 버전 1.0.0-beta04

2020년 5월 27일

androidx.camera:camera-camera2:1.0.0-beta04가 출시되었습니다. 버전 1.0.0-beta04에 포함된 커밋을 확인하세요.

버그 수정

  • 애플리케이션에서 비정상 종료를 야기하지 않고 Camera2Interop을 통해 camera2 캡처 요청 매개변수를 설정할 수 있습니다. 매개변수 재정의의 결과로 발생하는 문제가 있는지 유의하세요. Camera2Interop를 사용하여 매개변수를 재정의하는 경우 안정성과 동작이 보장되지 않습니다. (Ibe5a1, b/149103700)
  • pseudo-locale을 사용하는 기기에서 앱을 사용할 때 발생하는 자동 초기화가 해결되었습니다. (I3bef3, b/154767663)
  • Camera2CameraImpl에서 분리된 사용 사례와 관련된 오류 로그가 디버그 로그로 변환되었습니다. (I1a565, b/154422490)
  • 플래시가 작동하더라도 이미지가 종종 너무 어둡게 촬영되는 문제가 해결되었습니다. (I5d9fa, b/149729613)
  • ImageCapture에서 ImageProxy의 버퍼를 다시 리와인드하지 못하던 버그를 수정했습니다. (I0c455, b/153249512)
  • ImageCapture만 결합하면 (1) MAX_QUALITY로 사진을 찍지 못하고 (2) 자동 노출이 작동하지 않아 이미지 품질이 좋지 못한 문제가 해결되었습니다. (I17782, b/145326998)
  • 카메라를 가로채는 다른 프로세스나 코드 경로로 인해 CameraX가 연결 해제된 경우 카메라를 다시 열 때의 안정성이 향상되었습니다. (I1fbc3, b/153714651)

Camera-Core 버전 1.0.0-beta04

2020년 5월 27일

androidx.camera:camera-core:1.0.0-beta04가 출시되었습니다. 버전 1.0.0-beta04에 포함된 커밋을 확인하세요.

API 변경사항

  • CameraX 카메라 스택에 내부적으로 사용되는 핸들러를 설정하기 위한 실험용 API CameraXConfig.Builder#setSchedulerHandler()를 추가했습니다. CameraXConfig.Builder#setCameraExecutor()와 마찬가지로 이 새 API는 CameraX 카메라 스택에서 사용하는 스레드를 완전히 제어할 수 있어야 합니다. (I7bf32, b/121160431)

버그 수정

  • ImageReaderProxy가 닫힌 후 ImageProxy로의 액세스가 진행되는 ImageAnalysis에서 비정상 종료가 발생하는 문제를 해결했습니다. 이로 인해 ImageReaderProxy를 닫기 전에 Analyzer에서 수신한 모든 ImageProxy를 닫아야 합니다. (I4b299, b/145956416, b/154155377, b/156357269)
  • PreviewView#createSurfaceProvider()에서 CameraInfo 매개변수가 삭제되었습니다. 이제 PreviewView는 내부적으로 SurfaceRequest에서 가져옵니다. (If18f0, b/154652477)
  • pseudo-locale을 사용하는 기기에서 앱을 사용할 때 발생하는 자동 초기화가 해결되었습니다. (I3bef3, b/154767663)
  • 플래시가 작동하더라도 이미지가 종종 너무 어둡게 촬영되는 문제가 해결되었습니다. (I5d9fa, b/149729613)
  • setAnalyzer/clearAnalyzer를 여러 번 호출하면 분석 도구가 분석할 이미지를 수신하지 못하는 ImageAnalysis의 문제가 해결되었습니다. (I6169f, b/151605317, b/153514544)
  • ImageCapture에서 ImageProxy의 버퍼를 다시 리와인드하지 못하던 버그를 수정했습니다. (I0c455, b/153249512)
  • CameraManager에서 지원되는 목록의 첫 번째 카메라가 항상 사용되도록 선택되지는 않는 문제가 해결되었습니다. (I4c624, b/153418028)
  • Preview.SurfaceProvider 설정이 이전에 요청한 표면을 해제하지 않아 발생하는 간헐적 비정상 종료 문제가 해결되었습니다. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)

Camera-Camera2 버전 1.0.0-beta03

2020년 4월 15일

androidx.camera:camera-camera2:1.0.0-beta03이 출시되었습니다. 버전 1.0.0-beta03에 포함된 커밋을 확인하세요.

버그 수정

  • camera-core 출시를 지원하도록 수정했습니다.

Camera-Core 버전 1.0.0-beta03

2020년 4월 15일

androidx.camera:camera-core:1.0.0-beta03이 출시되었습니다. 버전 1.0.0-beta03에 포함된 커밋을 확인하세요.

버그 수정

  • UseCase 없이 bindToLifecycle()을 호출하면 예외가 발생하는 beta03에서 회귀를 수정했습니다. 이에 따라 UseCase를 결합하지 않고 Camera를 가져올 수 없습니다.

Camera-Camera2 버전 1.0.0-beta02

2020년 4월 1일

androidx.camera:camera-camera2:1.0.0-beta02가 출시되었습니다. 버전 1.0.0-beta02에 포함된 커밋을 확인하세요.

버그 수정

  • ImageCapture에서 생성되는 ImageProxyImageInfo.getRotationDegrees()를 EXIF 방향 회전 값과 일치하도록 수정했습니다. (Id4281, b/150802561)
  • 기본 CameraX/Camera2 구현을 사용하기 위해 더 이상 build.gradle 내의 CameraX 종속 항목을 명시적으로 정렬할 필요가 없습니다. 종속 항목을 엄격히 선언해야 하는 경우 이제 모든 CameraX 종속 항목을 빌드 파일에 포함할 수 있습니다. (I46e88)
  • 디스플레이 크기가 640x480보다 작은 기기에서 발생하는 IllegalArgumentException 문제를 수정했습니다. (Ife3f2, b/150506192)
  • 성공적으로 결합되는 경우 UseCase만 수정하도록 bindToLifecycle을 수정했습니다. 이전에는 해상도를 계산하기 위해 bindToLifecycle을 호출하면 UseCase가 업데이트되었습니다. 이제는 계산하기 위해 UseCase를 업데이트할 필요가 없습니다. (I78d9e)

Camera-Core 버전 1.0.0-beta02

2020년 4월 1일

androidx.camera:camera-core:1.0.0-beta02가 출시되었습니다. 버전 1.0.0-beta02에 포함된 커밋을 확인하세요.

버그 수정

  • ImageCapture에서 생성되는 ImageProxyImageInfo.getRotationDegrees()를 EXIF 방향 회전 값과 일치하도록 수정했습니다. (Id4281, b/150802561)
  • 성공적으로 결합되는 경우 UseCase만 수정하도록 bindToLifecycle을 수정했습니다. 이전에는 해상도를 계산하기 위해 bindToLifecycle을 호출하면 UseCase가 업데이트되었습니다. 이제는 계산하기 위해 UseCase를 업데이트할 필요가 없습니다. (I78d9e)
  • Preview.setSurfaceProvider()를 두 번 이상 호출한 후 미리보기 표시 영역이 변경되면 Preview 사용 사례의 캡처 세션이 업데이트되지 않는 문제를 해결했습니다.

Camera-Camera2 버전 1.0.0-beta01

2020년 2월 26일

androidx.camera:camera-camera2:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

버그 수정

  • SurfaceRequest.setSurface(Surface)의 이름이 SurfaceRequest.provideSurface(Surface)로, SurfaceRequest.setWillNotComplete()의 이름이 SurfaceRequest.willNotProvideSurface()로 변경되었습니다. (I224fe)
  • ImageCapture.setTargetRotation()을 사용하여 타겟 회전 값을 변경하면 저장된 이미지의 가로세로 비율이 올바르지 않은 문제를 수정했습니다. (I474ea, b/148763432)
  • 기본 CameraXConfig 제공자를 설정하는 플래그를 유지함으로써 ProGuard가 사용 설정된 앱 변형의 초기화를 수정했습니다. (I2d6c1)

Camera-Core 버전 1.0.0-beta01

2020년 2월 26일

androidx.camera:camera-core:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

API 변경사항

  • SurfaceRequest.provideSurface()ListenableFutureExecutorCallback으로 대체했습니다. 이렇게 하면 더 이상 provideSurface()에서 예외를 처리할 필요가 없으므로 API가 간소화되고 provideSurface() 콜백을 취소할 수 없게 됩니다. 이전 기기에서 표시 영역을 너무 일찍 해제하여 비정상 종료가 발생하는 것을 방지하기 위한 것입니다. 이제 제공된 SurfaceSurfaceRequest에서 사용되는 방법을 추적하는 데 SurfaceRequest.Result 객체를 사용합니다. (I7854b)
  • SurfaceRequest.setSurface(Surface)의 이름이 SurfaceRequest.provideSurface(Surface)로, SurfaceRequest.setWillNotComplete()의 이름이 SurfaceRequest.willNotProvideSurface()로 변경되었습니다. (I224fe)

버그 수정

  • ImageCapture.setTargetRotation()을 사용하여 타겟 회전 값을 변경하면 저장된 이미지의 가로세로 비율이 올바르지 않은 문제를 수정했습니다. (I474ea, b/148763432)
  • 기본 CameraXConfig 제공자를 설정하는 플래그를 유지함으로써 ProGuard가 사용 설정된 앱 변형의 초기화를 수정했습니다. (I2d6c1)
  • 가능한 값을 포함하도록 플래시 모드 API 관련 문서를 업데이트했습니다. (I4a3ec)

Camera-Camera2 버전 1.0.0-alpha10

2020년 2월 10일

androidx.camera:camera-camera2:1.0.0-alpha10이 출시되었습니다. 버전 1.0.0-alpha10에 포함된 커밋을 확인하세요.

버그 수정

  • Surface를 Camera2에서 사용하는 동안에만 유지하여 INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY 기기에서 안정성을 개선했습니다. (I9dac2)
  • CONTROL_AE_TARGET_FPS_RANGE를 올바르게 조정하여 기존 기기에서 과소 노출되는 미리보기 문제를 수정했습니다. (1224638)

Camera-Core 버전 1.0.0-alpha10

2020년 2월 10일

androidx.camera:camera-core:1.0.0-alpha10이 출시되었습니다. 버전 1.0.0-alpha10에 포함된 커밋을 확인하세요.

API 변경사항

  • 이미지를 UriOutputStream에 저장할 수 있도록 ImageCapture를 업데이트했습니다. 오버로드된 takePicture 메서드를 하나로 결합했습니다. 표준 예제로 Uri를 사용하도록 테스트 앱을 업데이트했습니다. (Ia3bec)
  • Preview.PreviewSurfaceProvider의 이름이 Preview.SurfaceProvider로 변경되었습니다. SurfaceProvider를 사용할 때 개발자는 더 이상 자체 ListenableFuture를 만들 필요가 없으며, 이제 새 SurfaceRequest 객체를 통해 Surface가 제공됩니다. PreviewPreviewView와 같은 다른 클래스와 페어링할 때 오용될 가능성이 있는 Preview.getPreviewSurfaceProvider() 메서드를 삭제했습니다. (I20105)
  • getTargetRotation()getTargetName()Preview에 추가했습니다. (Iceee7)
  • ImageAnalysisgetTargetRotation(), getBackpressureStrategy(), getImageQueueDepth()를 추가했습니다. (I9d6d9)
  • ImageCapture()getTargetRotation()getCaptureMode()를 추가했습니다. (I5bc17)
  • 이전에 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError()에 전달된 인수를 단일 인수 ImageCaptureException으로 대체했습니다. 이 인수에는 여전히 이전에 전달된 모든 정보가 포함되어 있습니다.
  • 이전에 ImageCapture.OnImageSavedCallback.onImageSaved()에 전달된 파일 인수를 삭제했습니다. (I750d2)
  • 이제 PreviewImageCapture 클래스가 최종으로 표시됩니다. (I2500b)
  • ZoomState 인스턴스를 반환하는 getZoomState()CameraInfogetZoomRatio(), getMaxZoomRatio(), getMinZoomRatio(), getLinearZoom() 메서드를 병합하여 API를 업데이트했습니다. (Ib19fe)
  • API 필드 OPTION_TARGET_CLASSOPTION_TARGET_NAMECameraXConfig에서 삭제했습니다. 내부 라이브러리 전용이기 때문입니다. CameraXConfig.Builder의 생성자를 삭제했습니다. (I96912)
  • CameraX를 초기화하려면 앱이 Application을 확장해야 한다는 요구사항을 삭제했습니다. 이제 애플리케이션의 build.gradlecamera-camera2 아티팩트가 포함되어 있는 한 CameraX는 기본 Camera2 구성으로 초기화됩니다. (I58ff5) (b/146923574)

Camera-Camera2 버전 1.0.0-alpha09

2020년 1월 22일

androidx.camera:camera-camera2:1.0.0-alpha09가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.

API 변경사항

  • Camera2 카메라 ID를 추출하기 위한 camera2 interop 경로를 추가했습니다. Camera2CameraInfo.extractCameraId()를 사용하여 CameraInfo에서 카메라 ID를 추출할 수 있습니다. 다음 코드 샘플은 이를 사용하는 방법을 보여줍니다.

    Camera camera = provider.bindToLifecycle(...);
    String cameraId =
        Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
    

    Camera2CameraInfo 클래스에는 ExperimentalCamera2Interop markerClass가 필요합니다.

Camera-Core 버전 1.0.0-alpha09

2020년 1월 22일

androidx.camera:camera-core:1.0.0-alpha09가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.

API 변경사항

  • SurfaceOrientedMeteringPointFactory 매개변수 useCaseForSurface의 이름이 useCaseForAspectRatio로 변경되었으며 참조 문서를 확장했습니다.
  • FocusMeteringAction.Builder.from() 메서드가 생성자 FocusMeteringAction.Builder()로 대체되었습니다.
  • DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float)이 삭제되었습니다. 애플리케이션은 Display 매개변수를 취하는 생성자를 사용하고 현재 화면에 전달해야 합니다.
  • MeteringMode 및 3A 플래그와 관련된 포커스 및 측정 API와 Display 매개변수 사용을 위해 Javadoc이 개선되었습니다.
  • setZoomRatiosetLinearZoom의 참조 문서를 확장했습니다.

버그 수정

  • 카메라를 닫고 열 때 '전제 조건' 검사에 오류가 발생하는 문제를 해결했습니다.
  • 토치 또는 확대/축소 API를 사용할 때 발생할 수 있는 ConcurrentModificationException을 해결했습니다.
  • mod16 크기를 사용할 수 있을 때 요청된 해상도에 더 근접한 해상도를 선택할 수 없는 문제를 이제 해결했습니다.
  • 이제 startFocusMeteringcancelFocusMetering API가 문서에 명시된 대로 작동하고 타이밍이 정확하며 오류가 발생할 경우 오류를 반환합니다.
  • 특정 타겟 해상도가 상응하는 크기를 지원하지 않는 기기에서 자르기 가로세로 비율과 함께 요청될 때 발생하는 문제를 해결했습니다. 이제는 원래 요청을 한정하기에 충분한 해상도(사용 가능한 경우)의 잘림 없는 크기가 선택됩니다.

Camera-Camera2 버전 1.0.0-alpha08

2019년 12월 18일

androidx.camera:camera-camera2:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

알려진 문제

  • Camera2 interop 사용 시 모든 Camera2 캡처 요청 옵션이 작동하는 것은 아닙니다. 요청된 옵션이 지원되지 않으면 세션이 시작하지 않고 09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination과 같은 오류가 발생할 수 있습니다.

버그 수정

  • API 수준 21 및 22에서 카메라를 회전하거나 전환하면 검은색 미리보기 화면이 표시되는 문제를 해결했습니다.

API 변경사항

  • 실험용: Camera ID 추출을 위한 camera2 interop 경로가 추가되었습니다.

Camera-Core 버전 1.0.0-alpha08

2019년 12월 18일

androidx.camera:camera-core:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

알려진 문제

  • PreviewView 또는 CameraView를 사용하는 앱에서 가로세로 비율 미리보기가 정확하지 않을 수 있습니다. 이 현상은 Pixel2와 같은 일부 FULL 기기에서 일시중지하거나 다시 시작한 후에 발생합니다.

버그 수정

  • FocusMeteringActionCameraControl의 문서가 업데이트되었습니다.
  • enableTorch()getTorchState()TorchControl이 구현되었습니다.

API 변경사항

  • IntDef를 숨기고 IntDef 상수를 IntDef 정의 외부로 옮겼습니다.
  • rotationDegrees를 클래스 OnImageCaptureCallback에서 ImageInfo로 옮겼습니다.
  • rotationDegrees를 클래스 Analyzer에서 ImageInfo로 옮겼습니다.

Camera-Camera2 버전 1.0.0-alpha07

2019년 12월 4일

androidx.camera:camera-camera2:1.0.0-alpha07이 출시되었습니다. camera-camera2의 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.

  • 이제 CameraX용 Camera2 기반 구현을 초기화하고 구성할 때 Camera2Config를 사용할 수 있습니다. 초기화에 이 커밋을 사용하는 방법의 세부 정보는 출시 노트의 camera-core 섹션을 참고하세요.
  • 이제 camera2 interop가 기능 측면에서 실험용으로 표시되고 별도의 패키지 androidx.camera.camera2.interop.로 이동되었습니다.

Camera-Core 버전 1.0.0-alpha07

2019년 12월 4일

androidx.camera:camera-core:1.0.0-alpha07이 출시되었습니다. camera-core의 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.

베타를 준비하고 있기 때문에 이 알파 버전에 상당한 변화가 있습니다. 변경사항을 검토하고 CameraX Google 그룹스에 의견을 공유해 주세요. Play 스토어에 있는 앱에서 CameraX를 사용하는 개발자는 애플리케이션 내에서 라이브러리를 업그레이드하기 전에 공식 베타 버전을 기다리는 것이 좋습니다.

API 변경사항

  • 중요: CameraX 초기화가 변경되었습니다. 애플리케이션은 CameraXConfig.Provider를 구현하고 androidx.camera.camera2에서 제공되는 기본값 Camera2Config를 사용해야 합니다. 일반적인 사용법은 다음과 같습니다.

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • CameraX 클래스를 삭제했습니다. 이전에 CameraX 클래스 호출에서 제공된 bindToLifecycle(), unbind(), unbindAll(), isBound()hasCamera()는 이제 ProcessCameraProvider를 통해 사용 가능합니다.

  • ProcessCameraProvider의 프로세스별 인스턴스는 정적 메서드 ProcessCameraProvider.getInstance()를 사용하여 비동기식으로 가져오게 됩니다. 이 인스턴스는 완료 시 ProcessCameraProvider를 제공하는 Listenable Future를 반환합니다. 다음은 onCreate()에 일반적으로 사용된 경우입니다. 나중에 활동의 수명 주기에서 getInstance()를 호출하여 초기화 지연 시간을 이후 시간(예를 들어, 사용자 작업에 의해 카메라 UI가 열리는 시점)으로 지연시킬 수 있습니다.

    import androidx.camera.lifecycle.ProcessCameraProvider
    import com.google.common.util.concurrent.ListenableFuture
    
    class MainActivity : AppCompatActivity() {
       private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
       override fun onCreate(savedInstanceState: Bundle?) {
           cameraProviderFuture = ProcessCameraProvider.getInstance(this);
      }
    
  • getInstance()에 의해 반환된 ListenableFuture에 리스너를 추가할 수 있습니다. 이렇게 하면 Future.get()을 차단하지 않고 Future에서 카메라 제공업체를 검색할 수 있습니다.

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • 이제 카메라는 사용 사례별로 선택되지 않고 카메라 선택기로 선택됩니다.

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle에는 수명 주기 소유자, 카메라 선택기 및 사용 사례가 지정됩니다. 그런 다음 이러한 항목은 지정된 수명 주기 소유자에 연결되고 선택된 카메라에 맞게 실행됩니다.

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • 사용 사례 'Config' 클래스가 삭제되었습니다. 대신 사용 사례를 직접 빌드하고 각 사용 사례 빌더에서 옵션을 설정하세요. 예:

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Android 권장사항을 적용하기 위해 애플리케이션에서 만들고 관리하는 영역을 허용하도록 미리보기 사용 사례가 업데이트되었습니다. camera-view 패키지에 제공된 PreviewView 뷰 클래스를 사용하는 것이 좋습니다.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • 앱 관리 영역을 연결하는 방법에 관한 문서를 참고하세요. 이러한 경우 앱이 영역의 수명 주기를 관리합니다.

  • 중요: ImageAnalysis 분석기 메서드 구현에서는 수신된 이미지를 사용하고 나서 그 이미지에서 image.close()를 호출해야 합니다. 그러지 않으면 백 프레셔에 따라 새 이미지가 수신되지 않거나 카메라가 멈출 수 있습니다. 세부정보는 참조 문서를 참고하세요.

  • ImageAnalysis ImageReaderMode가 이제 백 프레셔 전략 intdef로 변경되었습니다.

  • ImageProxy.getImage()는 실험용으로 표시됩니다. 애플리케이션은 @androidx.camera.core.ExperimentalGetImage 등을 통해 용도를 주석 처리해야 합니다.

  • AnalyzerUIThread 주석 필수사항이 삭제되었습니다.

  • 분석기 삭제 용도로 ImageAnalysis.clearAnalyzer() 함수가 추가되었습니다.

  • 메서드가 2개 이상 있는 리스너는 이름이 Callback으로 변경되었습니다.

    • ImageCapture.OnImageCapturedListener는 이제 ImageCapture.OnImageCapturedCallback입니다.
    • ImageCapture.OnImageSavedListener는 이제 ImageCapture.OnImageSavedCallback입니다.
    • VideoCapture.OnVideoSavedListener는 이제 VideoCapture.OnVideoSavedCallback입니다.
  • Enum이 IntDef로 변경되었습니다.

  • 확대/축소 컨트롤이 추가되었습니다.

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • 플래시/토치 하드웨어가 있는지 확인하기 위해 CameraInfo.hasFlashUnit()가 추가되었습니다.

  • CameraInfo.isFlashAvailable()를 삭제했습니다. 토치는 플래시 기능보다 우선 적용됩니다. 세부정보는 참조 문서에서 확인할 수 있습니다.

  • ImageCapture.Metadata 필드가 get/set/is 접근자로 대체되었습니다.

  • 이제 startFocusMeteringcancelFocusMetering은 호출의 비동기 작업을 나타내는 ListenableFutures를 반환합니다.

  • 이제 MeteringPoints는 측정 작업의 핸들로 기능하고 팩토리에서 생성됩니다. 앱은 맞춤 팩토리가 아닌 기존 팩토리를 사용해야 합니다.

해결된 문제

  • 앞서 일시중지하여 사진 찍기를 보류한 후 다시 사진을 찍을 때 발생하는 문제가 해결되었습니다.
  • 알려진 문제: 플래시 장치가 없어도 CameraControl.enableTorch()가 작동하지만 반환된 ListenableFuture<Void>가 항상 바로 complete(success) future가 됩니다. 향후 버전에서 이를 최종 동작으로 수정할 것입니다. 즉, 플래시 장치가 없는 경우에는 enableTorch(true)에 즉시 실패하고(요청을 CaptureSession에 전송하지 않음) TorchState가 꺼진 상태로 유지됩니다.
  • 알려진 문제: startFocusAndMeteringcancelFocusAndMetering이 포커스 측정을 시작하고 취소하지만 completed (success) future를 즉시 반환합니다. 이는 문서에 기록된 동작이 아닙니다. ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering()FocusMeteringResult는 가짜 결과(isFocusSuccessful())이고 항상 'false'입니다. 이는 문서에 기록된 의도된 동작과 다릅니다.
  • 알려진 문제: PreviewView 터치 이벤트에 사용할 Metering Point Factory를 현재 개발 중입니다. 이제 맞춤 관리되는 영역을 연결하는 앱에서 기존의 Metering Point Factory를 사용할 수 있으며, 그러지 않은 경우에는 PreviewView에 터치 포커스 기능을 사용할 수 없습니다.

Camera-Camera2 및 Camera-Core 버전 1.0.0-alpha06

2019년 10월 9일

androidx.camera:camera-camera2:1.0.0-alpha06androidx.camera:camera-core:1.0.0-alpha06이 출시되었습니다. camera-camera2:1.0.0-alpha06에 포함된 커밋camera-core:1.0.0-alpha06에 포함된 커밋을 확인하세요.

새로운 기능

가로세로 비율 설정 변경사항:

  • setTargetAspectRatioMode()가 추가되었으며 enum 인수가 허용됩니다. 이에 따라 임의의 가로세로 비율 대신 RATIO_4_3 또는 RATIO_16_9 옵션을 사용하여 가로세로 비율 모드가 설정됩니다. 카메라에서 임의의 가로세로 비율이 아닌 특정 가로세로 비율만 제공된다는 사실을 반영했습니다.
    • 현재 사용 가능한 비율은 16:9 및 4:3입니다. 1:1의 경우 카메라에서 사용할 수 있는 기기가 한정되어 있고 해상도도 제한됩니다. 1:1 인터페이스 또는 처리를 설계하는 애플리케이션은 더 유연한 16:9 또는 4:3 옵션을 사용하고 디스플레이를 자르거나 하위 영역을 처리해야 합니다.
    • 이 가로세로 비율은 최대 센서 영역을 사용하도록 지정됩니다.
  • 사용 사례 출력에서 타겟팅하는 가로세로 비율을 반환하도록 사용 사례 구성 API에 getTargetAspectRatio()를 추가했습니다.
  • ImageCapture의 메서드 setTargetAspectRatio(Rational aspectRatio)setTargetAspectRatioCustom(Rational aspectRatio)으로 변경되었습니다. 설정되면 그에 따라 ImageCapture 출력이 잘립니다.

Executor API

  • 다음 함수는 실행자 매개변수를 허용하며, 이 매개변수에 따라 앱은 함수가 실행되는 실행자를 제어할 수 있습니다.
    • Preview.setOnPreviewOutputUpdateListener() API입니다. 실행자가 함수에 없으면 기본 스레드에서 실행됩니다.
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

Flash Available API 및 Sensor Rotation API 확인에 CameraInfo 추가

  • CameraInfogetCameraInfo 메서드가 추가되어 앱에서 렌즈 방향 CameraInfo가 있는지, 카메라에 플래시를 사용할 수 있는지 여부를 확인할 수 있습니다. 예:

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • CameraInfo.getSensorRotationDegrees()가 추가되었습니다. 기기의 자연스러운 방향을 기준으로 또는 편의상 표면 회전에서 설명하는 방향(자연스러운 방향과 비교한 방향 설명)을 기준으로 카메라 센서 방향을 제공합니다.

API 변경사항 및 버그 수정

  • 가로세로 비율: 각 사용 사례에서 애플리케이션은 setTargetResolution() 또는 setTargetAspectRatio() 중 하나면 호출해야 합니다. 동일한 빌더에서 두 메서드를 호출하면 오류가 반환됩니다.
    • 일반적으로 애플리케이션의 UI 디자인에 따라 setTargetAspectRatio()를 사용하는 것이 좋습니다. 특정 해상도는 사용 사례를 기반으로 합니다. 예를 들어 미리보기는 화면 해상도에 근접하고 이미지 캡처는 고해상도 이미지를 제공합니다. 자세한 내용은 자동 해상도 표를 참고하세요.
    • 최소 해상도(계산 저장을 위해) 또는 최대 해상도(세부정보 처리를 위해)가 필요한 경우와 같은 더 구체적인 사례에는 setTargetResolution()을 사용합니다.
  • Executor API: 사용 사례 구성 API에서 setCallbackHandler() 호출을 삭제했습니다. 대신 애플리케이션은 콜백을 설정하는 다양한 다른 API에서 실행자를 매개변수로 설정할 수 있습니다.
  • 다양한 함수의 null 주석을 업데이트했습니다.
  • 카메라를 열 때 java.lang.IllegalStateException at Camera$StateCallback.onError를 일으키는 문제를 해결했습니다.
  • 앱에서 더 큰 해상도나 기본 해상도를 요청했을 때 너무 낮은(640x480 미만) 해상도가 선택되어 고르지 않거나 흐릿한 미리보기 이미지가 표시되는 문제를 해결했습니다. 구체적으로 더 낮은 해상도가 필요한 애플리케이션은 해상도를 명시적으로 요청할 수 있습니다.
  • 다른 카메라 애플리케이션을 실행한 인텐트에서 돌아온 후 카메라가 검은색 화면을 표시하는(카메라를 시작하지 못함) 문제를 해결했습니다.
  • 앱을 반복해서 시작하거나 중지할 때 다음 오류를 일으키는 버그를 수정했습니다. java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • ImageAnalysis를 사용 중지할 때 발생하는 다음 오류를 해결했습니다. java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • 카메라 연결 해제 흐름에 관한 테스트를 추가했습니다.
  • 카메라 테스트를 연달아 실행할 때 테스트 시스템의 안정성이 개선되었습니다.

Camera-Camera2 및 Camera-Core 버전 1.0.0-alpha05

2019년 9월 5일

androidx.camera:camera-camera2:1.0.0-alpha05androidx.camera:camera-core:1.0.0-alpha05가 출시되었습니다. camera-camera2:1.0.0-alpha05에 포함된 커밋camera-core:1.0.0-alpha05에 포함된 커밋을 확인하세요.

  • API 변경사항: 사용 사례 오류 변수 이름 변경:

    • ImageCapture.UseCaseError에서 ImageCapture.ImageCaptureError로 이름 변경
    • VideoCapture.UseCaseError에서 VideoCapture.VideoCaptureError로 이름 변경
  • CameraControl API 및 Tap-to-Focus API를 추가했습니다.

    • CameraX에서 렌즈 방향으로 선택된 카메라의 CameraControl을 가져오는 API를 추가했습니다.

      CameraX.getCameraControl(LensFacing lensFacing)

    • 탭하여 초점 맞추기를 실행하기 위해 MeteringPointFactory, MeteringPoint, MeteringMode, FocusMeteringAction을 추가했습니다.

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • 초점 측정을 시작하고 취소하는 CameraControl API를 추가했습니다.

      getCameraControl(lensFacing).startFocusAndMetering(action); getCameraControl(lensFacing).cancelFocusAndMetering();

    • 뷰 클래스를 기준으로 탭 좌표를 센서 좌표로 변환하도록 지원하는 Metering Point Factory용 API를 추가했습니다.

      MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView); MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);

  • 기본 (UI) 스레드에서 다음 메서드를 강제 호출하며 그러지 않는 경우 IllegalStateException이 발생합니다. 향후 버전에서는 다른 스레드에 사용하도록 허용하고 직렬화를 보장합니다.

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • 이제 다양한 구성 설정에서 null 매개변수를 사용할 수 있으며 상응하는 getter는 null을 반환할 수 있습니다.

  • AF/AE/AWB 설정을 지원하지 않는 에뮬레이터에서 테스트할 때 문제를 해결했습니다.

  • 회전 시 이미지를 분석하는 동안 비정상 종료되는 버그를 수정했습니다.

  • 회전하거나 전면 카메라와 후면 카메라 사이를 전환한 후 시작할 때 미리보기가 검은색으로 나타나는(카메라 데이터가 없음) 버그를 수정했습니다.

  • 여러 개의 동시 이미지 분석 사용 사례에 관한 테스트를 삭제했습니다. 호환성을 위해 애플리케이션은 단일 이미지 분석 사용 사례만 추가해야 합니다.

  • 카메라 테스트 도구 모음에 가짜 카메라에 관한 초기 robolectric 테스트를 추가했습니다(작업 진행 중).

  • 적용 범위가 불명확하거나 오해의 소지가 있어 Camera2Inititalizer 테스트를 삭제했습니다.

Camera-Camera2 및 Camera-Core 버전 1.0.0-alpha04

2019년 8월 7일

androidx.camera:camera-camera2:1.0.0-alpha04androidx.camera:camera-core:1.0.0-alpha04가 출시되었습니다. 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

새로운 기능

가로세로 비율과 해상도 선택 변경

CameraX의 목표는 카메라 세션을 성공적으로 초기화하는 것입니다. 즉, CameraX는 첫 목표로 캡처 세션을 시작하기 위해 기기 기능에 따라 해상도/가로세로 비율을 절충하므로 정확한 요청이 처리되지 않을 수 있습니다. 원인은 다음과 같을 수 있습니다.

  • 기기에서 요청된 해상도를 지원하지 않습니다.
  • 올바르게 작동하기 위해 특정 해상도를 사용해야 하는 LEGACY 기기 등에서 호환성 문제가 발생합니다.
  • 일부 기기에서 특정 형식이 특정 가로세로 비율에서만 사용될 수 있습니다.
  • JPEG 또는 동영상 인코딩의 경우 'nearest mod16'이 선호됩니다. CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP을 참고하세요.

CameraX는 세션을 만들고 관리하지만 항상 코드의 사용 사례 출력에서 반환된 이미지 크기를 확인하고 그에 따라 조정해야 합니다.

API를 더 명확하게 하기 위해 해상도와 가로세로 비율을 설정하는 데 일부 변경사항이 있습니다.

  • 아무것도 설정되지 않으면 이제 미리보기 사용 사례에서 기본 4:3 가로세로 비율인 것으로 간주합니다.
  • CameraX가 기기 기능에 기반해 요청된 해상도 및 가로세로 비율의 변경사항을 내부적으로 고려할 때 우선 setTargetAspectRatio 또는 setTargetResolution 호출에서 결정된 대로 동일한 가로세로 비율을 유지하려고 합니다.
  • 해상도의 'Nearest mod16' 버전은 동일한 가로세로 비율로 간주됩니다.

ImageAnalysis 비차단 모드

  • 이제 ImageReaderMode.ACQUIRE_LATEST_IMAGE의 동작이 비차단입니다. 이것은 대기열의 최신 이미지를 획득하지만 사용하지 않는 이미지를 계속 삭제하여 카메라 파이프라인이 차단되지 않도록 합니다.
  • 분석기는 파이프라인을 멈추지 않고 단일 이미지를 무기한으로 보유할 수 있습니다.
  • 애플리케이션이 차단된 executor를 제공하면 ImageAnalysis 사용 사례가 차단됩니다.
  • 기본 executor 세트는 내부적으로 비차단 executor로 작동합니다.

버그 수정

  • 자동 포커스, 자동 노출, 자동 화이트밸런스가 없는 기기에서 이미지를 캡처할 때 3A 컨버전스를 기다리는 시간 제한 문제를 해결했습니다.
  • ImageCapture로 빠르게 사진을 찍을 때 발생하는 문제를 해결했습니다. 다음 오류를 수정했습니다. java.lang.IllegalStateException: maxImages (2) has already been acquired
  • 사용 사례에 관해 setLensFacing이 호출되지 않아 java.lang.IllegalArgumentException: Unable to get camera ID for use case가 발생하는 문제를 해결했습니다.
  • LEGACY 기기에 최대 JPEG 해상도로 특정 가로세로 비율이 필요한 문제를 해결했습니다.
  • 카메라가 열려있는 동안 앱을 백그라운드로 전환할 때 발생하는 문제를 해결했습니다.
  • API < 25에서 발생하는 문제를 해결해 checkAndUpdateEglState: invalid current EGLDisplay 오류를 없앴습니다.
  • 확장 프로그램을 사용 설정하고 시작한 후 미리보기를 바인딩 해제할 때 발생하는 문제를 해결했습니다.
  • 이제 카메라 뷰 및 카메라 확장 프로그램 빌드 아티팩트가 알파 버전으로 게시됩니다.

Camera-Camera2 및 Camera-Core 버전 1.0.0-alpha03

2019년 7월 2일

androidx.camera:camera-core:1.0.0-alpha03androidx.camera:camera-camera2:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • setTarget 구성 호출에서 'target'에 관한 javadoc 설명을 추가했습니다.

Camera-Core

  • 빠른 열기/닫기 또는 바인딩/바인딩 해제 시 구성되지 않은 입력/출력 표면 비정상 종료를 수정했습니다.
  • 새로운 선물 구현으로 이동합니다.
  • 테스트 수정으로 테스트가 더 강력해집니다.
  • 이제 핵심 통합 테스트가 사진의 캡처 시간을 보여줍니다.
  • Executor를 위한 내부 compat 클래스를 개발했습니다.
  • 타이밍 테스트 앱 캡처 이미지는 이전이 완료되고 안정성이 개선되기를 기다립니다.

확장 프로그램

  • 버전 관리 확인을 추가합니다.
  • 확장 프로그램 이벤트 콜백을 테스트 적용 범위에 추가합니다.
  • 내부적으로 상응하는 이미지 및 메타 데이터를 개선합니다.
  • 테스트 앱에서 모드 전환으로 수정합니다.

Camera-Camera2 및 Camera-Core 버전 1.0.0-alpha02

2019년 6월 5일

androidx.camera:camera-core:1.0.0-alpha02androidx.camera:camera-camera2:1.0.0-alpha02가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

버그 수정

  • 에뮬레이터를 사용할 때 발생하는 div by zero 문제를 해결했습니다.
  • 사용 사례를 빠르게 바인딩 해제 및 리바인딩하는 동안 사진을 빠르게 찍을 때 일부 기기에서 발생하는 NullPointerException/Surface Abandoned 오류를 수정했습니다.
  • 캡처 요청 업데이트가 모든 표면에 일관되게 영향을 미치도록 내부 문제를 해결했습니다.
  • 새로운 앱 인스턴스에서 사용 사례를 다시 시작할 때 안정성을 개선합니다.
  • API에서 실행 프로그램 지원을 준비하기 위해 내부 아키텍처를 변경합니다.
  • CameraX 클래스 및 수명 주기 관리에서 Javadoc 설명을 추가합니다.
  • Antelope 성능 테스트 앱에 계측 테스트를 추가했습니다.
  • 앱 Proguard 구성에서 '-keepattributes Signature'를 사용할 필요가 없습니다.

Camera-Camera2 및 Camera-Core 1.0.0-alpha01

2019년 5월 7일

androidx.camera:camera-core:1.0.0-alpha01androidx.camera:camera-camera2:1.0.0-alpha01이 출시되었습니다. 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

Camera-Lifecycle 버전 1.0.0-beta11

2020년 10월 14일

androidx.camera:camera-lifecycle:1.0.0-beta11이 출시되었습니다. 버전 1.0.0-beta11에 포함된 커밋을 확인하세요.

버그 수정

  • targetRotation이 Builder 또는 UseCase에 설정되지 않은 경우 <UseCase>.getTargetRotation()이 카메라 인스턴스에 연결되기 전에 호출되면 Surface.ROTATION_0을 반환합니다. (I80fcd)

Camera-Lifecycle 버전 1.0.0-beta10

2020년 9월 23일

androidx.camera:camera-lifecycle:1.0.0-beta10이 출시되었습니다. 버전 1.0.0-beta10에 포함된 커밋을 확인하세요.

버그 수정

Camera-Lifecycle 버전 1.0.0-beta09

2020년 9월 16일

androidx.camera:camera-lifecycle:1.0.0-beta09가 출시되었습니다. 버전 1.0.0-beta09에 포함된 커밋을 확인하세요.

Camera-Lifecycle 버전 1.0.0-beta08

2020년 8월 19일

androidx.camera:camera-lifecycle:1.0.0-beta08이 출시되었습니다. 버전 1.0.0-beta08에 포함된 커밋을 확인하세요.

버그 수정

  • Context.getApplicationContext()에서 애플리케이션 객체를 반환하지 않는 컨텍스트를 사용할 때 초기화가 더 이상 비정상 종료되지 않습니다. (I3d3c9, b/160817073)

Camera-Lifecycle 버전 1.0.0-beta07

2020년 7월 22일

androidx.camera:camera-lifecycle:1.0.0-beta07이 출시되었습니다. 버전 1.0.0-beta07에 포함된 커밋을 확인하세요.

Camera-Lifecycle 버전 1.0.0-beta06

2020년 6월 24일

androidx.camera:camera-lifecycle:1.0.0-beta06이 출시되었습니다. 버전 1.0.0-beta06에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 ProcessCameraProvider#getInstance()를 호출하기 전에 ProcessCameraProvider#configureInstance()로 CameraX를 구성할 수 있습니다. 이렇게 하면 앱의 애플리케이션 클래스에서 CameraXConfig.Provider를 구현하지 않고도 CameraXConfig를 맞춤설정할 수 있습니다. (Ia1a8d)

Camera-Lifecycle 버전 1.0.0-beta05

2020년 6월 10일

androidx.camera:camera-lifecycle:1.0.0-beta05가 출시되었습니다. 버전 1.0.0-beta05에 포함된 커밋을 확인하세요.

버그 수정

  • 스마트폰이 방해 금지 모드일 때 CameraX를 초기화하면 앱 시작 시 비정상적으로 종료되는 문제를 해결했습니다. 애플리케이션이 다운되는 대신 CameraUnavailableException이 포함된 InitializationExceptionListenableFuture라는 초기화 결과로 설정됩니다. (I9909a, b/149413835)

Camera-Lifecycle 버전 1.0.0-beta04

2020년 5월 27일

androidx.camera:camera-lifecycle:1.0.0-beta04가 출시되었습니다. 버전 1.0.0-beta04에 포함된 커밋을 확인하세요.

Camera-Lifecycle 버전 1.0.0-beta03

2020년 4월 15일

androidx.camera:camera-lifecycle:1.0.0-beta03이 출시되었습니다. 버전 1.0.0-beta03에 포함된 커밋을 확인하세요.

버그 수정

  • UseCase 없이 bindToLifecycle()을 호출하면 예외가 발생하는 beta03에서 회귀를 수정했습니다. 이에 따라 UseCase를 결합하지 않고 Camera를 가져올 수 없습니다.
  • camera-core 출시를 지원하도록 수정했습니다.

Camera-Lifecycle 버전 1.0.0-beta01

2020년 2월 26일

androidx.camera:camera-lifecycle:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

버그 수정

  • 초기화 중에 ProcessCameraProvider를 가져올 때 기본 구성이 사용되며 Application 확장은 선택사항임을 나타내도록 문서를 수정했습니다. (I5e395)

Camera-Lifecycle 버전 1.0.0-beta02

2020년 4월 1일

androidx.camera:camera-lifecycle:1.0.0-beta02가 출시되었습니다. 버전 1.0.0-beta02에 포함된 커밋을 확인하세요.

버그 수정

  • camera-camera2:1.0.0-beta02camera-core:1.0.0-beta02 아티팩트에서 버그 수정을 지원하도록 업데이트했습니다.

Camera-Lifecycle 버전 1.0.0-alpha10

2020년 2월 10일

androidx.camera:camera-lifecycle:1.0.0-alpha10이 출시되었습니다. 버전 1.0.0-alpha10에 포함된 커밋을 확인하세요.

API 변경사항

  • BindToLifecycle, unbind 및 unbindAll 메서드에 @MainThread 주석을 추가했습니다. (I990d2)

Camera-Lifecycle 버전 1.0.0-alpha03

2020년 1월 22일

androidx.camera:camera-lifecycle:1.0.0-alpha03이 출시되었습니다. 버전 1.0.0-alpha03에 포함된 커밋을 확인하세요.

업데이트

  • Camera Core 및 Camera2 변경사항을 지원하기 위한 다양한 수정 및 업데이트가 이루어졌습니다.

Camera-Lifecycle 버전 1.0.0-alpha02

2019년 12월 18일

androidx.camera:camera-lifecycle:1.0.0-alpha02가 출시되었습니다. 버전 1.0.0-alpha02에 포함된 커밋을 확인하세요.

종속 항목 변경사항

  • androidx.camera:camera-core:1.0.0-alpha08을 사용하도록 업데이트되었습니다.

Camera-Lifecycle 버전 1.0.0-alpha01

2019년 12월 4일

androidx.camera:camera-lifecycle:1.0.0-alpha01이 출시되었습니다. camera-lifecycle의 버전 1.0.0-alpha01에 포함된 커밋을 확인하세요.

API 참고

  • camera-lifecycle 아티팩트가 추가되었습니다. 이 아티팩트는 LifeCycleCameraProvider 인터페이스를 제공하고 이전 CameraX 클래스의 대다수 기능을 핵심으로 제공하는 ProcessCameraProvider라는 구현을 제공합니다. 이 아티팩트는 getInstance() 메서드를 통해 얻게 됩니다.
  • CameraX를 사용하려면 앱에 camera-lifecycle 라이브러리가 있어야 합니다.
  • ProcessCameraProvider를 사용하여 CameraX 초기화를 실행하는 방법은 camera-core 섹션의 참고사항을 확인하세요.

Camera-Extensions 및 Camera-View 버전 1.0.0

버전 1.0.0-alpha32

2021년 12월 15일

androidx.camera:camera-extensions:1.0.0-alpha32androidx.camera:camera-view:1.0.0-alpha32가 출시되었습니다. 버전 1.0.0-alpha32에 포함된 커밋을 확인하세요.

API 변경사항

  • 내부 클래스/인터페이스에서 불필요한 @RequiresApi(21) 주석을 삭제했습니다. (I8e286, b/204917951)
  • camera-extensions 아티팩트용 API 파일을 업데이트합니다. (If683a, b/161377155)

버그 수정

  • VideoCapture를 바인딩할 때 앱이 확장 프로그램 모드를 사용 설정하도록 허용하지 않습니다. CameraX 확장 프로그램은 ImageCapturePreview만 지원합니다. VideoCapture는 아직 지원되지 않습니다. 앱이 VideoCapture를 바인딩하고 확장 모드를 사용 설정하면 IllegalArgumentException이 발생합니다. (I0d87b)
  • 결과 집합이 비어 있으면 더 이상 CameraSelector#filter에서 IllegalArgumentException이 발생하지 않습니다. (I27804)
  • ExtensionsManager#getInstance API가 ListenableFuture를 반환하므로 이름을 getInstanceAsync로 바꾸었습니다. 함수 이름의 비동기 접미사로 비동기 함수임을 명확히 나타낼 수 있습니다. (I279d2)
  • 사용자가 ImageCapture 사용 사례에서 지원되는 크기를 알 수 없고 반환된 지연 시간 정보가 최대 캡처 출력 크기인지 또는 입력 해상도 매개변수인지 구별할 수 없으므로 ExtensionsManager#getEstimatedCaptureLatencyRange API에서 해상도 매개변수를 삭제합니다. (I74bb2)
  • ExtensionsManager 함수의 CameraProvider 매개변수를 getInstance() API로 이동합니다. 따라서 사용자가 ExtensionsManager 함수를 호출할 때마다 CameraProvider 매개변수를 입력하지 않아도 됩니다. (Ic7e48)

버전 1.0.0-alpha31

2021년 11월 17일

androidx.camera:camera-extensions:1.0.0-alpha31androidx.camera:camera-view:1.0.0-alpha31이 출시되었습니다. 버전 1.0.0-alpha31에 포함된 커밋을 확인하세요.

API 변경사항

  • CameraSelector를 기준으로 CameraInfos 목록을 필터링하도록 CameraSelector#filter를 공개 API에 추가했습니다. (I105d0)

버그 수정

  • 특정 기기에서 확장 모드를 빠르게 전환할 때 발생하는 비정상 종료 문제를 수정했습니다. (Iebbef)

버전 1.0.0-alpha30

2021년 10월 13일

androidx.camera:camera-extensions:1.0.0-alpha30androidx.camera:camera-view:1.0.0-alpha30이 출시되었습니다. 버전 1.0.0-alpha30에 포함된 커밋을 확인하세요.

API 변경사항

  • 모든 CameraX 클래스에 @RequiresApi(21) 주석을 추가하고 AndroidManifest.xml에서 minSdkVersion을 삭제했습니다. 이를 통해 minSdkVersion이 21 미만이지만 API 21 이상을 사용하는 코드 경로를 조건부로 사용하려는 애플리케이션에 camera-core를 쉽게 통합할 수 있습니다. minSdkVersion 21 이상을 사용하는 애플리케이션에서는 이 변경으로 인한 별도의 작업이 필요하지 않습니다. (Ie7f2e, b/200599470)

버그 수정

  • proguard가 사용 설정된 경우 발생하는 AbstractMethodError 문제를 해결했습니다. (Iae468, b/201177844)

버전 1.0.0-alpha29

2021년 9월 29일

androidx.camera:camera-extensions:1.0.0-alpha29androidx.camera:camera-view:1.0.0-alpha29가 출시되었습니다. 버전 1.0.0-alpha29에 포함된 커밋을 확인하세요.

API 변경사항

  • 더 이상 실험용 API가 아니므로 ExperimentalUseCaseGroup 주석이 삭제되었습니다. (I01ef5)
  • RotationProvider#removeAllListeners()를 삭제합니다. 대신 RotationProvider#removeListener(...)를 사용하세요. (Id9d4a)
  • RotationReceiver 클래스가 업데이트되었습니다. Listener의 set/clear가 add/remove/removeAll로 변경되었으며, 기본적으로 기본 스레드를 사용하는 setListener 변형을 삭제하고 메서드 주석을 추가했습니다. (Ib1669)

버그 수정

  • 확장 모드에서 하는 일을 올바르게 표현하기 위해 ExtensionMode#BEAUTY를 FACE_RETOUCH로 이름을 바꾸었습니다. (I61f54, b/198515274)
  • 하나의 활동에서 여러 CameraController 및 PreviewView를 사용할 때 예기치 않게 카메라가 닫히는 문제를 해결했습니다. (Ibfd18, b/197539358)

버전 1.0.0-alpha28

2021년 8월 18일

androidx.camera:camera-extensions:1.0.0-alpha28androidx.camera:camera-view:1.0.0-alpha28이 출시되었습니다. 버전 1.0.0-alpha28에 포함된 커밋을 확인하세요.

API 변경사항

  • 더 이상 실험용 API가 아니므로 ExperimentalUseCaseGroupLifecycle 주석이 삭제되었습니다. (I17b85)
  • RotationListener를 리팩터링하고 RotationProvider로 이름을 바꾸었습니다. 계속해서 동일한 기능을 제공하고 API가 조금 달라졌습니다. (Idffc5)
  • TAP_TO_FOCUS_UNSUCCESSFUL을 TAP_TO_FOCUS_NOT_FOCUSED로, TAP_TO_FOCUS_SUCCESSFUL을 TAP_TO_FOCUS_FOCUSED로 이름을 바꾸었습니다. OutputSize가 완료되었습니다. (I099fa)

버그 수정

  • 지원 중단된 <EffectName><UseCase>Extender 클래스, ExtensionsErrorListener 및 관련 ExtensionsManager API를 삭제했습니다. (I3b8c3)

버전 1.0.0-alpha27

2021년 7월 21일

androidx.camera:camera-extensions:1.0.0-alpha27androidx.camera:camera-view:1.0.0-alpha27이 출시되었습니다. 버전 1.0.0-alpha27에 포함된 커밋을 확인하세요.

API 변경사항

  • 표시 영역 API가 시험용에서 벗어나 승격되었습니다. API의 실험용 주석을 삭제합니다. (I717ea)
  • CoordinateTransform#getTransform의 이름을 CoordinateTransform#transform으로 변경하고 JavaDoc을 업데이트했습니다. (I864ae)

버그 수정

  • Compose UI와 함께 사용할 때 발생하는 PreviewView PERFORMANCE 모드 확대 문제가 해결되었습니다. (Ie1137, b/183864890)

버전 1.0.0-alpha26

2021년 6월 30일

androidx.camera:camera-extensions:1.0.0-alpha26androidx.camera:camera-view:1.0.0-alpha26이 출시되었습니다. 버전 1.0.0-alpha26에 포함된 커밋을 확인하세요.

API 변경사항

  • 최신 탭하여 초점 맞추기 결과를 노출하는 새 메서드 CameraController#getTapToFocusState()를 추가합니다. (Iaccb0)
  • CameraController에 camera-core 기능을 더 추가했습니다. 추가된 기능은 타겟 가로세로 비율과 타겟 해상도, 캡처 모드, CameraControl, 맞춤 실행기 관련 getter/setter입니다. (Iea8f2)
  • 표면 회전 변경사항을 수신하는 RotationReceiver 클래스를 추가합니다. 기기가 고정된 세로 또는 가로 모드일 때 타겟 회전을 설정하는 데 사용할 수 있습니다. (Ib278f)
  • 새 getEstimatedCaptureLatencyRange 공개 API를 ExtensionsManager 클래스에서 노출했습니다. (I6a8ec)
  • ExtensionsErrorListener 지원을 중단했습니다. 현재 이 인터페이스는 확장 모드를 사용 설정할 때 미리보기나 ImageCapture가 없는지 모니터링하는 데만 사용됩니다. CameraX가 자동으로 추가 미리보기나 ImageCapture를 추가하여 확장 함수가 잘 작동하도록 합니다. 그 후에는 이 인터페이스를 통해 오류가 보고되지 않습니다. (I47d9e)
  • 새 ExtensionsManager getInstance, isExtensionAvailable, getExtensionEnabledCameraSelector 공개 API를 노출하고 이전 <EffectName><UseCase>Extender 클래스와 관련 API의 지원을 중단했습니다. (I329e6)

버전 1.0.0-alpha25

2021년 6월 2일

androidx.camera:camera-extensions:1.0.0-alpha25androidx.camera:camera-view:1.0.0-alpha25가 출시되었습니다. 버전 1.0.0-alpha25에 포함된 커밋을 확인하세요.

API 변경사항

  • ExperimentalCameraFilter API가 이제 실험 단계를 벗어나 공식 API가 됩니다. 주석이 달린 OptIn 없이 사용할 수 있습니다. (I4bc94)
  • 사용 사례 간 좌표를 변환하는 유틸리티를 추가합니다. 사용 예: ImageAnalysis 사용 사례에서 감지된 좌표를 변환하고 미리보기에서 감지된 객체를 강조표시합니다. (I63ab1, b/137515129)
  • CameraView를 삭제했습니다. CameraViewCameraController로 대체했습니다. 이전 방법은 이전 가이드를 참고하세요. (Id5005)

버그 수정

  • ExperimentalUseCaseGroupLifecycleExperimentalUseCaseGroup으로 대체했습니다. (I3b2ef, b/159033688)

버전 1.0.0-alpha24

2021년 4월 21일

androidx.camera:camera-extensions:1.0.0-alpha24androidx.camera:camera-view:1.0.0-alpha24가 출시되었습니다. 버전 1.0.0-alpha24에 포함된 커밋을 확인하세요.

버그 수정

  • 실험용 API의 주석 @Experimental@RequiresOptIn으로 바꿨습니다. 실험용 API를 호출하려면 지원 중단된 androidx.annotation.experimental.UseExperimental 대신 androidx.annotation.OptIn을 사용하세요. (Iff226)
  • 삼성 J5 Prime에서 PreviewView가 확장되는 문제를 해결했습니다. (Ib10b6)

Camera Extensions 및 View 버전 1.0.0-alpha23

2021년 3월 24일

androidx.camera:camera-extensions:1.0.0-alpha23androidx.camera:camera-view:1.0.0-alpha23이 출시되었습니다. 버전 1.0.0-alpha23에 포함된 커밋을 확인하세요.

API 변경사항

  • CameraView가 지원 중단됩니다. 대신 LifecycleCameraController를 사용하세요. 이전 가이드를 참고하세요. (Idac2c)
  • setLinearZoom()에 FloatRange 주석을 추가했습니다. (I69971)

버그 수정

  • 1.0.0 아티팩트에 의존하도록 camera-view 종속 항목을 고정했습니다. camera-view에 종속되더라도 더 이상 Gradle의 종속 항목 해결 방법이 camera-core, camera-camera2, camera-lifecycle을 최신 1.1.0 아티팩트로 자동 업그레이드하지 않습니다. 하지만 camera-view가 1.1.0을 사용하도록 명시적으로 설정되는 경우 이러한 아티팩트와 계속 호환됩니다. (Ic8fa1, b/181599852)
  • PreviewView에서 삼성 A3의 미리보기가 늘어나는 문제를 해결했습니다. (Iacb30, b/180121821)
  • 카메라를 초기화하기 전에 카메라 선택기를 설정할 수 없는 문제를 해결했습니다. (Ic8bd0)

Camera Extensions 및 View 버전 1.0.0-alpha22

2021년 2월 24일

androidx.camera:camera-extensions:1.0.0-alpha22androidx.camera:camera-view:1.0.0-alpha22이 출시되었습니다. 버전 1.0.0-alpha22에 포함된 커밋을 확인하세요.

API 변경사항

버그 수정

  • 미리보기 또는 ImageCapture가 바인딩된 경우에만 오류를 보고하도록 ExtensionsErrorListener를 수정했습니다. (I5ae39)

Camera Extensions 및 View 버전 1.0.0-alpha21

2021년 1월 27일

androidx.camera:camera-extensions:1.0.0-alpha21androidx.camera:camera-view:1.0.0-alpha21이 출시되었습니다. 버전 1.0.0-alpha21에 포함된 커밋을 확인하세요.

다른 카메라 라이브러리 아티팩트를 지원하도록 출시되었습니다.

Camera Extensions 및 View 버전 1.0.0-alpha20

2020년 12월 16일

androidx.camera:camera-extensions:1.0.0-alpha20androidx.camera:camera-view:1.0.0-alpha20이 출시되었습니다. 버전 1.0.0-alpha20에 포함된 커밋을 확인하세요.

다른 카메라 라이브러리 아티팩트를 지원하도록 출시되었습니다.

Camera-Extensions 및 Camera-View 버전 1.0.0-alpha19

2020년 11월 11일

androidx.camera:camera-extensions:1.0.0-alpha19androidx.camera:camera-view:1.0.0-alpha19가 출시되었습니다. 버전 1.0.0-alpha19에 포함된 커밋을 확인하세요.

버그 수정

  • @ExperimentalVideo 주석을 camera-view에 도입했습니다. 이 주석은 기능이 완전히 개발될 때 변경될 수 있는 실험용 동영상 기능을 노출하는 API를 표시합니다. 이러한 API를 사용하는 메서드는 ExperimentalVideo와 함께 @UseExperimental 주석을 markerClass로 사용해야 합니다. (I6d729)

Camera-Extensions 버전 1.0.0-alpha18

2020년 10월 14일

androidx.camera:camera-extensions:1.0.0-alpha18이 출시되었습니다. 버전 1.0.0-alpha18에 포함된 커밋을 확인하세요.

버그 수정

  • CameraX 초기화 및 bindToLifecycle의 지연 시간을 개선했습니다. (I61dc5)
  • targetRotation이 Builder 또는 UseCase에 설정되지 않은 경우 <UseCase>.getTargetRotation()이 카메라 인스턴스에 연결되기 전에 호출되면 Surface.ROTATION_0을 반환합니다. (I80fcd)

Camera-View 버전 1.0.0-alpha18

2020년 10월 14일

androidx.camera:camera-view:1.0.0-alpha18이 출시되었습니다. 버전 1.0.0-alpha18에 포함된 커밋을 확인하세요.

다른 카메라 라이브러리 아티팩트를 지원하도록 출시되었습니다.

Camera-Extensions 버전 1.0.0-alpha17

2020년 9월 23일

androidx.camera:camera-extensions:1.0.0-alpha17이 출시되었습니다. 버전 1.0.0-alpha17에 포함된 커밋을 확인하세요.

버그 수정

Camera-View 버전 1.0.0-alpha17

2020년 9월 23일

androidx.camera:camera-view:1.0.0-alpha17이 출시되었습니다. 버전 1.0.0-alpha17에 포함된 커밋을 확인하세요.

버그 수정

Camera-Extensions 버전 1.0.0-alpha16

2020년 9월 16일

androidx.camera:camera-extensions:1.0.0-alpha16이 출시되었습니다. 버전 1.0.0-alpha16에 포함된 커밋을 확인하세요.

버그 수정

  • 카메라 인스턴스에서 확장 프로그램을 사용 설정하고 쿼리하는 데 사용되는 Extensions 객체를 가져오도록 ExtensionsManager에 메서드를 추가했습니다. (I4fb7e)

Camera-View 버전 1.0.0-alpha16

2020년 9월 16일

androidx.camera:camera-view:1.0.0-alpha16이 출시되었습니다. 버전 1.0.0-alpha16에 포함된 커밋을 확인하세요.

API 변경사항

  • PreviewView#setDeviceRotationForRemoteDisplayMode()PreviewView#getDeviceRotationForRemoteDisplayMode()가 삭제되었습니다. 두 메서드는 원하는 회전이 디스플레이 회전(예: 원격 디스플레이)이 아닌 경우 미리보기 회전을 맞춤설정하기 위한 것입니다. 이제 디스플레이가 아닌 미리보기 회전을 처리하려면 Preview#setTargetRotation() 및 새로 추가된 PreviewView#getViewPort(targetRotation)을 사용하여 원하는 회전을 설정합니다. (Ib62cc)
  • createSurfaceProvider()의 이름을 getSurfaceProvider()로 변경했습니다. 이 메서드는 항상 Preview.SurfaceProvider의 동일한 인스턴스를 반환합니다. (Iff83c)

버그 수정

  • 확장 프로그램 효과가 사용 설정되고 공급업체 라이브러리 구현이 출력 표면에서 특수 프로세스를 실행해야 하는 경우 PreviewView에서 TextureView를 사용하도록 강제했습니다. (I0c3cc)
  • 미리보기에서 임의의 타겟 회전을 허용합니다. 변환 정보가 계산되고 새 TranformationInfoListener 콜백을 통해 사용자에게 즉시 반환됩니다. (I21470)

알려진 문제

  • PreviewView에서 최종 사용자가 PreviewView를 클릭할 때 OnClickListener#onClick()이 호출되지 않습니다. 터치 이벤트가 PreviewView#onTouchEvent()에서 잘못 소비됩니다. 이 문제는 다음 버전에서 수정될 예정입니다.
  • PreviewView#getMeteringPointFactory()에서 가져온 MeteringPoint는 ViewPort가 PreviewView와 함께 사용되면 잘못될 수 있습니다.

Camera-Extensions 버전 1.0.0-alpha15

2020년 8월 19일

androidx.camera:camera-extensions:1.0.0-alpha15가 출시되었습니다. 버전 1.0.0-alpha15에 포함된 커밋을 확인하세요.

버그 수정

  • 이제 ExtensionsManager.init() 메서드는 0 인수 대신 매개변수로 컨텍스트를 가져옵니다. (Ife754)
  • Context.getApplicationContext()에서 애플리케이션 객체를 반환하지 않는 컨텍스트를 사용할 때 초기화가 더 이상 비정상 종료되지 않습니다. (I3d3c9, b/160817073)

    Camera-View 버전 1.0.0-alpha15

    2020년 8월 19일

androidx.camera:camera-view:1.0.0-alpha15가 출시되었습니다. 버전 1.0.0-alpha15에 포함된 커밋을 확인하세요.

버그 수정

  • DisplayOrientedMeteringPointFactoryCameraSelector 대신 CameraInfo 인스턴스를 가져오므로 팩토리에서 포인트를 생성할 카메라의 직접 매핑이 있습니다. DisplayOrientedMeteringPointFactory를 사용하는 모든 클래스도 CameraSelector 대신 CameraInfo 인스턴스를 가져옵니다. (I400c1)
  • TextureViewMeteringPointFactory를 삭제했습니다. PreviewViewTextureView 또는 SurfaceView 사용 여부와 상관없이 측정 포인트 팩토리를 만드는 공개 API(createMeteringPointFactory())를 제공합니다. (Ide693)
  • PreviewView의 SURFACE_VIEW/TEXTURE_VIEW 구현 모드 이름을 PERFORMANCE/COMPATIBLE로 변경합니다. PERFORMANCE가 이전 SURFACE_VIEW 모드이며 COMPATIBLE이 이전 TEXTURE_VIEW 모드입니다. (I0edc2)
  • 이미지 캡처의 경우 카메라 방향에 기반하여 메타데이터에서 수평 뒤집기 플래그를 덮어씁니다. (I28499)

Camera-Extensions 버전 1.0.0-alpha14

2020년 7월 22일

androidx.camera:camera-extensions:1.0.0-alpha14가 출시되었습니다. 버전 1.0.0-alpha14에 포함된 커밋을 확인하세요.

Camera-View 버전 1.0.0-alpha14

2020년 7월 22일

androidx.camera:camera-view:1.0.0-alpha14가 출시되었습니다. 버전 1.0.0-alpha14에 포함된 커밋을 확인하세요.

Camera-Extensions 버전 1.0.0-alpha13

2020년 6월 24일

androidx.camera:camera-extensions:1.0.0-alpha13이 출시되었습니다. 버전 1.0.0-alpha013에 포함된 커밋을 확인하세요.

버그 수정

  • 카메라 ID와 CameraCharacteristics로 카메라를 필터링하기 위한 실험용 인터페이스가 추가되었습니다. (I28f61)

Camera-View 버전 1.0.0-alpha13

2020년 6월 24일

androidx.camera:camera-view:1.0.0-alpha13이 출시되었습니다. 버전 1.0.0-alpha013에 포함된 커밋을 확인하세요.

버그 수정

  • 바인딩된 직후 수명 주기가 소멸 상태로 전환되는 LifecycleOwner에 바인딩할 때 CameraView가 IllegalArgumentException으로 더 이상 비정상 종료되지 않습니다. 소멸 상태의 바인딩 수명 주기는 카메라를 열려고 하지 않습니다. (I7c2b8)
  • 이제 PreviewView StreamState는 CameraView.getPreviewStreamState()를 통해 사용할 수 있습니다. (I21a2b)

Camera-Extensions 버전 1.0.0-alpha12

2020년 6월 10일

androidx.camera:camera-extensions:1.0.0-alpha12가 출시되었습니다. 버전 1.0.0-alpha12에 포함된 커밋을 확인하세요.

버그 수정

  • 스마트폰이 방해 금지 모드일 때 CameraX를 초기화하면 앱 시작 시 비정상적으로 종료되는 문제를 해결했습니다. 애플리케이션이 다운되는 대신 CameraUnavailableException이 포함된 InitializationExceptionListenableFuture라는 초기화 결과로 설정됩니다. (I9909a, b/149413835)

Camera-View 버전 1.0.0-alpha12

2020년 6월 10일

androidx.camera:camera-view:1.0.0-alpha12가 출시되었습니다. 버전 1.0.0-alpha12에 포함된 커밋을 확인하세요.

버그 수정

  • 미리보기 표시 영역에 표시된 콘텐츠의 비트맵 표현을 반환하는 PreviewView#getBitmap() API를 추가했습니다. (I9b500, b/157659818)

Camera-Extensions 버전 1.0.0-alpha11

2020년 5월 27일

androidx.camera:camera-extensions:1.0.0-alpha11이 출시되었습니다. 버전 1.0.0-alpha11에 포함된 커밋을 확인하세요.

Camera-View 버전 1.0.0-alpha12

2020년 6월 10일

androidx.camera:camera-view:1.0.0-alpha12가 출시되었습니다. 버전 1.0.0-alpha12에 포함된 커밋을 확인하세요.

새로운 기능

API 변경사항

버그 수정

  • 미리보기 표시 영역에 표시된 콘텐츠의 비트맵 표현을 반환하는 PreviewView#getBitmap() API를 추가했습니다. (I9b500, b/157659818)

Camera-View 버전 1.0.0-alpha11

2020년 5월 27일

androidx.camera:camera-view:1.0.0-alpha11이 출시되었습니다. 버전 1.0.0-alpha11에 포함된 커밋을 확인하세요.

API 변경사항

  • 미리보기가 스트리밍 중인지 앱에서 확인할 수 있는 PreviewView#getPreviewStreamState API를 추가했습니다. PreviewView가 TEXTURE_VIEW 모드일 경우 STREAMING 상태에서도 미리보기 이미지가 표시됩니다. (Ic0906, b/154652477)
  • 애플리케이션이 원격 표시 모드에서 실행 중일 때 변환 계산을 위해 기기 회전 기능을 제공하는 PreviewView#setDeviceRotationForRemoteDisplayMode() API가 추가되었습니다. (I59b95, b/153514525)

버그 수정

  • Android 7.0 이하를 실행하는 FULL/LIMITED/LEVEL_3 카메라의 미리보기 왜곡 문제가 해결되었습니다. Android 버전 7.0 이하인 경우 강제로 ImplementationMode#TEXTURE_VIEW 모드를 사용하도록 했습니다. (I83e30, b/155085307)
  • PreviewView#createSurfaceProvider()에서 CameraInfo 매개변수가 삭제되었습니다. 이제 PreviewView는 내부적으로 SurfaceRequest에서 가져옵니다. (If18f0, b/154652477)
  • CameraView에서 VideoCapture의 기본 가로세로 비율이 16:9로 수정되었습니다. (Ie6a7b, b/153237864)
  • Preview 프래그먼트를 스와이프 아웃한 다음 ViewPager2에서 스와이프 백하면 PreviewView 검은색 화면이 나타나는 문제가 해결되었습니다. 또한 removeView(previewview)addView(previewView)일 때 발생하는 문제도 해결되었습니다. (Iab555, b/149877652, b/147354615)
  • 이미지를 UriOutputStream에 저장할 수 있도록 CameraView#takePicture() API를 업데이트했습니다. 표준 예제로 Uri를 사용하도록 테스트 앱을 업데이트했습니다. (Ia2459, b/153607583)
  • ScaleType 속성을 설정하여 XML 레이아웃에서 PreviewView의 확장 유형을 설정할 수 있습니다. (I08565, b/153015659)
  • CameraView.ScaleType을 삭제했습니다. 대신 CameraView에서 PreviewView.ScaleType을 사용하여 확장 유형을 설정하거나 가져올 수 있습니다. (Ia8974, b/153014831)
  • 아직 배경색이 없으면 기본적으로 PreviewView 배경색이 지정됩니다. 그러면 미리보기 스트림이 시작되기 전까지는 배경 뒤에 있는 콘텐츠가 표시되지 않습니다. (I09fad)

Camera-Extensions 버전 1.0.0-alpha10

2020년 4월 15일

androidx.camera:camera-extensions:1.0.0-alpha10이 출시되었습니다. 버전 1.0.0-alpha10에 포함된 커밋을 확인하세요.

버그 수정

  • Camera-Core 출시를 지원하도록 수정했습니다.

Camera-View 버전 1.0.0-alpha10

2020년 4월 15일

androidx.camera:camera-view:1.0.0-alpha010이 출시되었습니다. 버전 1.0.0-alpha010에 포함된 커밋을 확인하세요.

버그 수정

  • 이전에 PreviewView의 surfaceView 구현이 특정 기기에서 제대로 작동하지 않아 미리보기 재개 후에 앱이 다운되던 알려진 문제를 수정했습니다. (I5ed6b)

Camera-Extensions 버전 1.0.0-alpha09

2020년 4월 1일

androidx.camera:camera-extensions:1.0.0-alpha09가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.

버그 수정

  • camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02, camera-lifecycle:1.0.0-beta02 아티팩트의 버그 수정을 지원하도록 업데이트했습니다.

Camera-View 버전 1.0.0-alpha09

2020년 4월 1일 androidx.camera:camera-view:1.0.0-alpha09가 출시되었습니다. 버전 1.0.0-alpha09에 포함된 커밋을 확인하세요.

알려진 문제

  • PreviewView와 함께 ImplementationMode.SURFACE_VIEW를 사용하면 특정 기기에서 제대로 작동하지 않을 수도 있습니다. 미리보기에 사용되는 SurfaceView는 포함하는 창의 수명 주기가 중지되면 표시 영역을 무효화하기 때문입니다. 창이 다시 시작되면 카메라가 다시 열리고 SurfaceView의 표시 영역이 다시 유효해지기 전에 미리보기를 재개하려고 시도할 수도 있습니다. 지금은 ImplementationMode.TEXTURE_VIEW를 사용해야 합니다.

API 변경사항

  • PreviewView.setImplementationMode()의 이름이 PreviewView.setPreferredImplementationMode()로 변경되었습니다.
  • PreviewView.getImplementationMode()의 이름이 PreviewView.getPreferredImplementationMode()로 변경되었습니다.
  • PreviewView.getSurfaceProvider()PreviewView.createSurfaceProvider(CameraInfo)로 대체했습니다. 가능하다면 ImplementationMode.SURFACE_VIEW를 사용하여 미리보기를 최적화하는 데 사용되는 null 허용 CameraInfo 인스턴스를 취합니다. null 인스턴스가 전달되거나 기본 구현 모드를 ImplementationMode.TEXTURE_VIEW로 설정하는 경우 ImplementationMode.TEXTURE_VIEW가 내부적으로 사용됩니다.
  • 다음 코드 샘플은 이전에 PreviewView에서 사용된 미리보기 사용 사례를 보여줍니다.

    preview.setSurfaceProvider(previewView.previewSurfaceProvider)
    cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    

    지금은 다음을 작성할 수 있습니다.

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • @UiThread 주석을 PreviewView.getSurfaceProvider()에 추가했습니다. 즉, 기본 스레드에서 호출해야 함을 의미합니다. (I192f3)

  • 미리보기의 확장 유형을 설정할 수 있는 PreviewView.setScaleType()을 추가했습니다. PreviewView.ScaleType의 값 중 하나를 허용하며, 기본값은 PreviewView.ScaleType.FILL_CENTER입니다.

  • PreviewView.getScaleType()을 추가했습니다.

  • implementationMode 속성을 사용하여 XML 레이아웃에서 PreviewView의 구현 모드를 설정할 수 있는 지원을 삭제했습니다.

  • createMeteringPointFactory() API를 PreviewView에 추가하여 PreviewView의 (x, y)를 MeteringPoint로 변환하도록 지원합니다. (Ib36d7)

버그 수정

  • PreviewView의 크기가 변경된 후 잘못된 미리보기가 표시되는 문제를 수정했습니다. (I71101)

Camera-Extensions 버전 1.0.0-alpha08

2020년 2월 26일

androidx.camera:camera-extensions:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

Camera-View 버전 1.0.0-alpha08

2020년 2월 26일

androidx.camera:camera-view:1.0.0-alpha08이 출시되었습니다. 버전 1.0.0-alpha08에 포함된 커밋을 확인하세요.

버그 수정

  • SurfaceRequest.provideSurface()ListenableFutureExecutorCallback으로 대체했습니다. 이렇게 하면 더 이상 provideSurface()에서 예외를 처리할 필요가 없으므로 API가 간소화되고 provideSurface() 콜백을 취소할 수 없게 됩니다. 이전 기기에서 표시 영역을 너무 일찍 해제하여 비정상 종료가 발생하는 것을 방지하기 위한 것입니다. 이제 제공된 SurfaceSurfaceRequest에서 사용되는 방법을 추적하는 데 SurfaceRequest.Result 객체를 사용합니다. (I7854b)
  • SurfaceRequest.setSurface(Surface)의 이름이 SurfaceRequest.provideSurface(Surface)로, SurfaceRequest.setWillNotComplete()의 이름이 SurfaceRequest.willNotProvideSurface()로 변경되었습니다. (I224fe)
  • 기본 CameraXConfig 제공자를 설정하는 플래그를 유지함으로써 ProGuard가 사용 설정된 앱 변형의 초기화를 수정했습니다. (I2d6c1)

Camera-Extensions 버전 1.0.0-alpha07

2020년 2월 10일

androidx.camera:camera-extensions:1.0.0-alpha07이 출시되었습니다. 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.

버그 수정

  • 이전에 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError()에 전달된 인수를 단일 인수 ImageCaptureException으로 대체했습니다. 이 인수에는 여전히 이전에 전달된 모든 정보가 포함되어 있습니다.
  • 이전에 ImageCapture.OnImageSavedCallback.onImageSaved()에 전달된 파일 인수를 삭제했습니다. (I750d2)

Camera-View 버전 1.0.0-alpha07

2020년 2월 10일

androidx.camera:camera-view:1.0.0-alpha07이 출시되었습니다. 버전 1.0.0-alpha07에 포함된 커밋을 확인하세요.

API 변경사항

  • PreviewViewTextureView 구현은 이제 TextureView의 크기를 카메라 센서 출력 크기로 설정한 후 상위 PreviewView를 채우도록 확장합니다. 카메라 미리보기가 UI 전체 부분(예: 전체 화면)을 채우도록 하려면 PreviewView의 크기를 고정 값으로 설정해서는 안 됩니다. 또는 뷰가 콘텐츠를 래핑하도록 만들면(예: 'wrap_content' 속성 사용) 카메라 미리보기가 PreviewView의 일부만 채울 수도 있습니다(카메라 센서 출력 크기가 더 작은 경우). 대신 PreviewView를 상위 요소와 같은 크기로 설정해야 합니다(예: 'match_parent' 속성 사용). (1204869)

버그 수정

  • 이미지를 UriOutputStream에 저장할 수 있도록 ImageCapture를 업데이트했습니다. 오버로드된 takePicture 메서드를 하나로 결합했습니다. 표준 예제로 Uri를 사용하도록 테스트 앱을 업데이트했습니다. (Ia3bec)
  • Preview.PreviewSurfaceProvider의 이름이 Preview.SurfaceProvider로 변경되었습니다. SurfaceProvider를 사용할 때 개발자는 더 이상 자체 ListenableFuture를 만들 필요가 없으며, 이제 새 SurfaceRequest 객체를 통해 Surface가 제공됩니다. PreviewPreviewView와 같은 다른 클래스와 페어링할 때 오용될 가능성이 있는 Preview.getPreviewSurfaceProvider() 메서드를 삭제했습니다. (I20105)
  • 이전에 ImageCapture.OnImageSavedCallback.onError()ImageCapture.OnImageCapturedCallback.onError()에 전달된 인수를 단일 인수 ImageCaptureException으로 대체했습니다. 이 인수에는 여전히 이전에 전달된 모든 정보가 포함되어 있습니다.
  • 이전에 ImageCapture.OnImageSavedCallback.onImageSaved()에 전달된 파일 인수를 삭제했습니다. (I750d2)
  • ZoomState 인스턴스를 반환하는 getZoomState()CameraInfogetZoomRatio(), getMaxZoomRatio(), getMinZoomRatio(), getLinearZoom() 메서드를 병합하여 API를 업데이트했습니다. (Ib19fe)

Camera-Extensions 버전 1.0.0-alpha06

2020년 1월 22일

androidx.camera:camera-extensions:1.0.0-alpha06이 출시되었습니다. 버전 1.0.0-alpha06에 포함된 커밋을 확인하세요.

업데이트

  • Camera Core 및 Camera2 변경사항을 지원하기 위한 다양한 수정 및 업데이트가 이루어졌습니다.

Camera-View 버전 1.0.0-alpha06

2020년 1월 22일

androidx.camera:camera-view:1.0.0-alpha06이 출시되었습니다. 버전 1.0.0-alpha06에 포함된 커밋을 확인하세요.

업데이트

  • Camera Core 및 Camera2 변경사항을 지원하기 위한 다양한 수정 및 업데이트가 이루어졌습니다.

Camera-Extensions 버전 1.0.0-alpha05

2019년 12월 18일

androidx.camera:camera-extensions:1.0.0-alpha05가 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.

버그 수정

  • 내부 Camera Core API와 일치하도록 업데이트되었습니다.

Camera-View 버전 1.0.0-alpha05

2019년 12월 18일

androidx.camera:camera-view:1.0.0-alpha05가 출시되었습니다. 버전 1.0.0-alpha05에 포함된 커밋을 확인하세요.

알려진 문제

  • PreviewView를 사용할 때 가로세로 비율이 잘못될 수 있습니다. (b/146215202)

새로운 기능

  • SurfaceTexture의 수명 주기를 카메라에 사용되는 TextureView 영역과 동기화하는 PreviewView.TextureViewImplementation이라는 새 클래스를 구현했습니다.

Camera-Extensions 버전 1.0.0-alpha04

2019년 12월 4일

androidx.camera:camera-extensions:1.0.0-alpha04가 출시되었습니다. camera-extensions의 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 확장 프로그램의 가용성을 확인하고 사용 설정을 할 때 CameraSelector를 입력 매개변수로 사용합니다. 사용 사례를 바인딩하는 데 사용된 동일한 CameraSelector여야 합니다.

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
    val builder = ImageCapture.Builder()
    val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
    if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
        bokehImageCaptureExtender.enableExtension(cameraSelector)
    }
    val imageCapture = builder.build()
    mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
    
  • 확장 프로그램 라이브러리를 사용하려면 먼저 확장 프로그램을 초기화해야 합니다.

    val availability = ExtensionsManager.init()
    Futures.addCallback<ExtensionsManager.ExtensionsAvailability>(
       availability,
       object : FutureCallback<ExtensionsManager.ExtensionsAvailability> {
           override fun onSuccess(availability: ExtensionsManager.ExtensionsAvailability?) {
               // Ready to make extensions calls
           }
           override fun onFailure(throwable: Throwable) {
               // Extensions could not be initialized
           }
       },
       Executors.newSingleThreadExecutor()
    )
    

Camera-View 버전 1.0.0-alpha04

2019년 12월 4일

androidx.camera:camera-view:1.0.0-alpha04가 출시되었습니다. camera-view의 버전 1.0.0-alpha04에 포함된 커밋을 확인하세요.

API 변경사항

  • 애플리케이션에서 미리보기 사용 사례의 출력을 쉽게 표시하기 위해 PreviewView 클래스가 제공됩니다.
  • PreviewView를 레이아웃에 포함할 수 있습니다.

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
       />
    
  • PreviewView는 미리보기 사용 사례에 쉽게 연결할 수 있도록 PreviewSurfaceProvider를 제공합니다.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • 이제 API 이름 지정에서 'ZoomLevel'이 'ZoomRatio'로 변경되었습니다.

  • 몇몇 메서드 매개변수가 null 허용 여부를 변경했습니다.

Camera-Extensions 및 Camera-View 버전 1.0.0-alpha03

2019년 10월 9일

androidx.camera:camera-extensions:1.0.0-alpha03androidx.camera:camera-view:1.0.0-alpha03이 출시되었습니다. camera-extensions:1.0.0-alpha03에 포함된 커밋camera-view:1.0.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • 확장 프로그램용 컨텍스트 이니셜라이저를 추가했습니다. 확장 프로그램 버전을 1.1.0으로 높였습니다.

Camera-Extensions 및 Camera-View 버전 1.0.0-alpha02

2019년 9월 5일

androidx.camera:camera-extensions:1.0.0-alpha02androidx.camera:camera-view:1.0.0-alpha02가 출시되었습니다. camera-extensions:1.0.0-alpha01에 포함된 커밋camera-view:1.0.0-alpha01에 포함된 커밋을 확인하세요.

  • PreviewImageProcessorImpl이 타임스탬프를 올바르게 구현했는지 확인하는 테스트를 추가했습니다.
  • Nexus 5(API 수준 21)의 ExtensionTest 테스트 실패를 해결하고 미리보기를 사용할 수 있는지 확인합니다.

Camera-Extensions 및 Camera-View 버전 1.0.0-alpha01

2019년 8월 7일

androidx.camera:camera-extensions:1.0.0-alpha01androidx.camera:camera-view:1.0.0-alpha01이 출시되었습니다. camera-extensions:1.0.0-alpha01에 포함된 커밋camera-view:1.0.0-alpha01에 포함된 커밋을 확인하세요.

  • 향후 Camera Extensions의 새로운 라이브러리로 지원되는 기기의 효과에 액세스합니다. 이 라이브러리는 진행 중인 작업입니다.
  • 새로운 카메라 뷰 클래스. 이 라이브러리는 진행 중인 작업입니다.