CameraX

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

앱 또는 라이브러리에서 CameraX 라이브러리를 사용하는 방법에 관한 자세한 내용은 CameraX 개요를 참조하세요.

다음은 최신 출시 버전과 함께 androidx.camera 그룹의 모든 아티팩트 목록입니다. 코드에 이러한 아티팩트를 포함하면 androidx.camera:<artifact>:<version> 형식으로 종속 항목을 선언합니다.

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

기기 테스트

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

종속 항목 선언

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

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

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

의견

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

새 문제 만들기

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

Camera-Camera2 및 Camera-Core 버전 1.0.0

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-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-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의 새로운 라이브러리로 지원되는 기기의 효과에 액세스합니다. 이 라이브러리는 진행 중인 작업입니다.
  • 새로운 카메라 뷰 클래스. 이 라이브러리는 진행 중인 작업입니다.