카메라 뷰파인더
이 표에는 androidx.camera-viewfinder
그룹의 모든 아티팩트가 나열됩니다.
아티팩트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
viewfinder-compose | 1.5.0 | - | - | 1.4.0-alpha13 |
viewfinder-core | 1.5.0 | - | - | 1.4.0-alpha13 |
viewfinder-view | 1.5.0 | - | - | 1.4.0-alpha13 |
종속 항목 선언
camera-viewfinder의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
Groovy
dependencies { // Use to implement camera viewfinders implementation "androidx.camera.viewfinder:viewfinder-view:1.5.0" implementation "androidx.camera.viewfinder:viewfinder-compose:1.5.0" implementation "androidx.camera.viewfinder:viewfinder-core:1.5.0" }
Kotlin
dependencies { // Use to implement camera viewfinders implementation("androidx.camera.viewfinder:viewfinder-view:1.5.0") implementation("androidx.camera.viewfinder:viewfinder-core:1.5.0") implementation("androidx.camera.viewfinder:viewfinder-compose:1.5.0") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.5
버전 1.5.0
2025년 9월 10일
androidx.camera.viewfinder:viewfinder-compose:1.5.0
, androidx.camera.viewfinder:viewfinder-core:1.5.0
및 androidx.camera.viewfinder:viewfinder-view:1.5.0
이 출시되었습니다. 버전 1.5.0에는 이러한 커밋이 포함되어 있습니다.
1.4.0 이후 중요 변경사항:
강력하고 수명 주기를 인식하며 사용하기 쉬운 View 및 Compose 기반 API를 제공하는 Camera Viewfinder 라이브러리의 첫 번째 안정화 버전입니다. 이러한 구성요소는 카메라 뷰파인더 역할을 하도록 설계되었으며 Camera2와 직접 통합할 수 있습니다.
이 출시에서는 새로운 androidx.camera:camera-compose
아티팩트의 기반도 마련합니다. 이 아티팩트는 PreviewView
이 뷰 기반 레이아웃에서 작동하는 방식과 유사하게 CameraX SurfaceRequest
와 원활하게 통합되는 Compose 관용구 뷰파인더인 CameraXViewfinder
를 도입합니다. 가장 중요한 변경사항은 다음과 같습니다.
- 아티팩트 재배치: 모듈성을 개선하기 위해 뷰파인더 아티팩트가 자체 라이브러리 그룹으로 이동했습니다. 이전에
androidx.camera:camera-viewfinder*
종속 항목을 사용한 개발자는androidx.camera.viewfinder:viewfinder-*
로 이전해야 합니다. - API 안정화 및 개선: 이 안정화 버전에서는 API 노출 영역이 개선되었습니다. 여기에는 다재다능함을 더 잘 반영하기 위해
CameraViewfinder
를ViewfinderView
로 이름을 바꾸고, 명확성을 위해 패키지를 재구성하고, 더 예측 가능한 상태 관리를 위해ViewfinderSurfaceRequest
를 불변 데이터 유형으로 만드는 작업이 포함됩니다. - Compose API 업데이트: 이제 Compose
Viewfinder
API는 카메라 스트림이 컨테이너 내에 표시되는 방식을 세부적으로 제어하기 위해ContentScale
및Alignment
를 지원하여 표준androidx.compose.foundation.Image
컴포저블의 동작을 미러링합니다. - Surface 수명 주기 관리: 이제 API 29 이상에서 구성 변경사항과 수명 주기 이벤트 전반에 걸쳐
ViewfinderSurfaceSession
가 활성 상태로 유지됩니다. 이 변경사항은 프레임 삭제를 줄이고 더 원활한 사용자 환경을 제공하기 위해 설계되었습니다. - 구현 모드 기본값: 이제
Viewfinder
이 최적의 기본 구현을 자동으로 선택하는 지능형ImplementationMode
으로 기본 설정됩니다. 성능이 우수한SurfaceView
(EXTERNAL
모드)를 우선시하고 이전 API 수준이나 알려진 호환성 문제가 있는 기기에서는 호환성이 더 높은TextureView
(EMBEDDED
모드)로 정상적으로 대체됩니다. 이 동작은 개발자가 완전히 제어할 수 있도록 재정의할 수 있습니다.
버그 수정
- 이제 컴포저블
Viewfinder
이 Compose의Pager
내에서 그리고movableContentOf()
와 함께 올바르게 작동하여 복잡한 UI 시나리오에서 서페이스가 올바르게 재설정되고 관리됩니다. (I0d9be, I79432) - 변환이 적용될 때
SurfaceView
기반Viewfinder
가 늘어나 보일 수 있는 Android 10 및 11의 문제를 수정했습니다. (Icc77c)
버전 1.5.0-rc01
2025년 8월 13일
androidx.camera.viewfinder:viewfinder-compose:1.5.0-rc01
, androidx.camera.viewfinder:viewfinder-core:1.5.0-rc01
및 androidx.camera.viewfinder:viewfinder-view:1.5.0-rc01
이 출시되었습니다. 버전 1.5.0-rc01에는 이 커밋이 포함되어 있습니다.
버그 수정
- 기본
minSdk
을 API 21에서 API 23으로 이동 (Ibdfca, b/380448311, b/435705964, b/435705223)
버전 1.5.0-beta03
2025년 7월 16일
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta03
, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta03
및 androidx.camera.viewfinder:viewfinder-view:1.5.0-beta03
이 출시되었습니다. 버전 1.5.0-beta03에는 이러한 커밋이 포함되어 있습니다.
버그 수정
- 이제
Viewfinder
(Compose 및 뷰 기반 모두)의 기본ImplementationMode
가EXTERNAL
(성능용)와EMBEDDED
(이전 API/특이한 기기와의 호환성용) 중에서 지능적으로 선택합니다. 이 동작은ViewfinderSurfaceRequest
또는 XML 속성 (뷰 기반 API)의 명시적 설정으로 재정의할 수 있습니다. (Iecd3a) - API 29 이상에서 TextureView 또는 SurfaceView를 사용할 때 노출 영역 생성/삭제 수명 주기 전반에서
ViewfinderSurfaceSession
가 활성 상태로 유지되도록 하여 노출 영역 세션 관리 개선(I112d9) - 이제
Viewfinder
는 컴포저블이 삭제될 때 항상 해제하는 대신 세션에서 더 이상 사용하지 않을 때만 적절한 시간에 Surface가 해제되도록 합니다.EXTERNAL
(SurfaceView
)의 경우 이 동작은 현재 API 29 이상에서만 사용할 수 있습니다.EMBEDDED
(TextureView
)의 경우 이 동작은 모든 API 수준에 있습니다. (I9a03f) - 이제
Viewfinder
가 API 수준 28 이하에서EXTERNAL
뷰파인더가 화면 밖으로 이동하거나Viewfinder
(ImplementationMode
포함)가moveableContentOf()
의 일부인 경우와 같은 시나리오에서 표면 교체를 적절하게 처리합니다. (I79432) - 이제 컴포저블
Viewfinder
가 Compose의Pager
와 올바르게 작동합니다. 이 변경사항은AndroidView
의onReset
콜백을 구현하여 컴포저블을 성공적으로 재설정할 수 있도록 하며EMBEDDED
및EXTERNAL
구현을 모두 지원합니다. (I0d9be) - 변환 작업 (예: 크기 조절 또는 변환)이 너무 일찍 적용되어
EXTERNAL
Viewfinder
이 늘어나거나 잘못 표시될 수 있는 Android 10/11의 문제를 수정합니다. 이제 시스템은 레이아웃 단계에서 이러한 변환을 적용하기 전에 Surface가 생성될 때까지 기다려 올바른 출력을 보장합니다. (Icc77c)
버전 1.5.0-beta02
2025년 6월 4일
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta02
, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta02
및 androidx.camera.viewfinder:viewfinder-view:1.5.0-beta02
이 출시되었습니다. 버전 1.5.0-beta02에는 이 커밋이 포함되어 있습니다.
버전 1.5.0-beta01
2025년 5월 7일
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01
, androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01
및 androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01
이 출시되었습니다. 버전 1.5.0-beta01에는 이러한 커밋이 포함되어 있습니다.
- 이 버전은 Camera2와 함께 사용할 수 있을 만큼 유연한 뷰 기반 및 Compose 기반 뷰파인더의 첫 번째 공식 베타 출시입니다. CameraX와 함께 사용할 뷰나 컴포저블을 찾고 있다면
PreviewView
및CameraXViewfinder
를 참고하세요.
새로운 기능
- 이제
ContentScale
와Alignment
를 Compose 기반 뷰파인더에서 사용하여androidx.compose.foundation.Image
의 작동 방식과 유사하게 표시된 화면을 컨테이너 내에서 확장하고 배치할 수 있습니다. (Ibcea3)
API 변경사항
- 이제
TransformationInfo
에 모든 인수의 기본값이 있습니다. 이렇게 하면TransformationInfo
없이 뷰파인더를 만들 수 있으며, 기본적으로 소스 회전은 0이고 소스 미러링은 없으며 자르기 rect도 없습니다. (I2b1b2) - 이제 컴포저블 Viewfinder는
AndroidExternalSurface
와 마찬가지로 Surface 세션을 수신하는 후행 람다를 사용합니다. 제공된 람다는ViewfinderInitScope
를 리시버로 사용하므로 새 Surface 세션을 수신하는 콜백을 설치할 수 있습니다. 이러한 화면 세션은 범위를 벗어나면 뷰파인더에서 보유한 리소스를 자동으로 해제합니다. (Ib2b0d) - 이제
ViewfinderSurfaceRequest.Builder.populateFromCharacteristics
가 삭제되었으며populateFromCharacteristics
와 동일한 변환을 생성하는TransformationInfo
를 생성하는 데 사용할 수 있는 동등한 정적 API 집합으로 대체되었습니다. 이러한 정적 메서드는Camera2TransformationInfo
클래스에 추가됩니다. (Idc6af) ViewfinderSurfaceRequest
에는 더 이상 표면을 가져오는 비동기 API가 포함되지 않습니다. 이제 변경할 수 없는 데이터 유형입니다. Surface를 가져오는 API가 이제 뷰파인더로 이동되었습니다. (I30127)CameraViewfinder
의 이름이 뷰파인더 컴포저블의 이름과 일치하고 카메라 소스뿐만 아니라 다른 소스와도 함께 사용할 수 있음을 나타내기 위해ViewfinderView
로 바뀌었습니다. (Id9e6b)viewfinder-view
의 클래스가androidx.camera.viewfinder
패키지에서androidx.camera.viewfinder.view
하위 패키지로 이동했습니다. (I6cb44)- 소스 회전, 미러링, 자르기 사각형을 설정할 수 있는 뷰 기반 뷰파인더에 새 API가 추가되었습니다. 이
TransformationInfo
클래스는 Compose 기반 Viewfinder에서 사용하는 클래스와 동일합니다. (I907c3) - 뷰 기반 뷰파인더는 이제 더 이상 내부적으로 Surface 응답을 처리하지 않는 새로운
ViewfinderSurfaceRequest
API를 사용합니다. 이제requestSurfaceSession()
API는ListenableFuture<Surface>
을 반환하는 대신ListenableFuture<ViewfinderSurfaceSession>
을 반환합니다.ListenableFuture<ViewfinderSurfaceSession>
은 닫을 때ViewfinderSurfaceRequest.markSurfaceSafeToRelease()
의 이전 API를 호출하는 것과 동일한 방식으로 동작하는AutoCloseable
클래스를 반환합니다. 이렇게 하면 표면 요청과 표면 응답 간의 책임이 더 명확하게 분리됩니다. (I19041)
버전 1.4
버전 1.4.0-alpha13
2025년 2월 26일
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13
및 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13
이 출시되었습니다. 버전 1.4.0-alpha13에는 이 커밋이 포함되어 있습니다.
버전 1.4.0-alpha12
2025년 1월 15일
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12
및 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12
이 출시되었습니다. 버전 1.4.0-alpha12에는 이 커밋이 포함되어 있습니다.
새로운 기능
- Android 15 관련 API를 사용하기 위해
compileSdk
를 35로 업그레이드했습니다. CameraX 라이브러리를 사용하는 앱도compileSdk
구성 설정을 업그레이드해야 합니다. (Ic80cd) - 이제 이 라이브러리는 유형 사용인 JSpecify nullness 주석을 사용합니다. Kotlin 개발자는 다음 컴파일러 인수를 사용하여 올바른 사용을 강제해야 합니다.
-Xjspecify-annotations=strict
(Kotlin 컴파일러 버전 2.1.0부터 기본값임) (I7bcd7, b/326456246)
버전 1.4.0-alpha11
2024년 12월 11일
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha11
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha11
및 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha11
이 출시되었습니다. 버전 1.4.0-alpha11에는 이 커밋이 포함되어 있습니다.
API 변경사항
viewfinder-core
클래스가 속한 라이브러리와 일치하는 패키지로 이동했습니다. (I431c6)- Compose에서 재사용할 수 있도록
CameraViewfinder.ScaleType
가viewfinder-core
로 이동되었습니다. (I87ef1) - 지원 중단된
CameraViewfinder
클래스가 삭제되었습니다. 동일한 기능을 제공하는 새 API를 사용하세요. (I6e59a)
버전 1.4.0-alpha10
2024년 10월 30일
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha10
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha10
및 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha10
이 출시되었습니다. 버전 1.4.0-alpha10에는 이 커밋이 포함되어 있습니다.
버전 1.4.0-alpha09
2024년 10월 2일
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha09
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha09
및 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha09
이 출시되었습니다. 버전 1.4.0-alpha09에는 이 커밋이 포함되어 있습니다.
버전 1.4.0-alpha08
2024년 9월 4일
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha08
, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha08
및 androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha08
이 출시되었습니다. 버전 1.4.0-alpha08에는 이 커밋이 포함되어 있습니다.
새로운 기능
1.4.0-alpha08로 업데이트되면서 CameraX Viewfinder 아티팩트가 자체 라이브러리 그룹으로 이동했습니다. 이 변경사항은 CameraX 라이브러리의 모듈성과 유지관리성을 개선하는 데 필요합니다.
이전에 androidx.camera:camera-viewfinder
, androidx.camera:camera-viewfinder-compose
또는 androidx.camera:camera-viewfinder-core
에 의존한 경우 종속 항목을 다음으로 전환해야 합니다.
androidx.camera:camera-viewfinder
->androidx.camera.viewfinder:viewfinder-view
androidx.camera:camera-viewfinder-compose
->androidx.camera.viewfinder:viewfinder-compose
androidx.camera:camera-viewfinder-core
->androidx.camera.viewfinder:viewfinder-core
이 전환을 위해 코드를 변경할 필요는 없습니다. 이전 뷰파인더 Maven 좌표는 더 이상 업데이트되지 않습니다.
또한 CameraX와 함께 Compose를 사용하는 경우 이제 새로운 Compose 우선 라이브러리인 androidx.camera:camera-compose
를 알파 버전으로 사용할 수 있습니다. 이렇게 하면 CameraXViewfinder
컴포저블이 제공됩니다. 이는 PreviewView
가 뷰에서 작동하는 방식과 유사하게 CameraX의 SurfaceRequest
를 Compose에 적용하는 Compose 관용구 뷰파인더입니다.