Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

CameraX

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

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

아티팩트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
camera-camera2 - - 1.0.0-beta09 -
camera-core - - 1.0.0-beta09 -
camera-extensions - - - 1.0.0-alpha16
camera-lifecycle - - 1.0.0-beta09 -
camera-view - - - 1.0.0-alpha16
이 라이브러리는 2020년 9월 16일에 최종 업데이트되었습니다.

기기 테스트

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

종속 항목 선언

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

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

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.0.0-beta10"
  // 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 View class
  implementation "androidx.camera:camera-view:1.0.0-alpha17"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:1.0.0-alpha17"
}

의견

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

새 문제 만들기

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

Camera-Camera2 및 Camera-Core 버전 1.0.0

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)
  • setAnanazer/clearAnanazer를 여러 번 호출하면 분석 도구가 분석할 이미지를 수신하지 못한 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)

    • Tap-to-Focus를 실행하도록 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 설명을 추가했습니다.

카메라 코어

  • 빠른 열기/닫기 또는 바인딩/바인딩 해제 시 구성되지 않은 입력/출력 표면 비정상 종료를 수정했습니다.
  • 새로운 선물 구현으로 이동합니다.
  • 테스트 수정으로 테스트가 더 강력해집니다.
  • 이제 핵심 통합 테스트가 사진의 캡처 시간을 보여줍니다.
  • 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

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

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에 포함된 커밋을 확인하세요.

알려진 문제

  • 미리보기를 사용할 때 가로세로 비율이 잘못될 수 있습니다. (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의 새로운 라이브러리로 지원되는 기기의 효과에 액세스합니다. 이 라이브러리는 진행 중인 작업입니다.
  • 새로운 카메라 뷰 클래스. 이 라이브러리는 진행 중인 작업입니다.