폴더블 기기 및 카메라

참고: 이 페이지에서는 Camera2 패키지를 다룹니다. 앱에 Camera2의 특정 하위 수준 기능이 필요한 경우가 아니라면 CameraX를 사용하는 것이 좋습니다. CameraX와 Camera2는 모두 Android 5.0(API 수준 21) 이상을 지원합니다.

카메라 개발자는 폴더블 기기에서 실행되는 카메라 애플리케이션을 개발할 때 고유한 어려움을 겪을 수 있습니다. 디스플레이 방향, 카메라 방향, 방향과 관련된 여러 가정이 종종 유효한 스마트폰과 달리 폴더블 기기에는 다양한 폼 팩터, 디스플레이 레이아웃, 카메라 조합이 있을 수 있습니다.

스마트폰에는 일반적으로 디스플레이와 일치하는 세로 모드 방향의 카메라가 있습니다. 그러나 특정 폴더블 상태에서는 이 말이 맞지 않을 수 있습니다. 펼쳐진 화면에는 세로 모드 센서 하나와 가로 모드 센서 하나가 있을 수 있습니다.

카메라 애플리케이션이 SurfaceTexture 또는 맞춤 렌더링 파이프라인을 사용하는 경우 카메라 센서 방향을 인식해야 합니다.

이렇게 하면 렌더링된 콘텐츠가 항상 물리적으로 수직을 유지하고 픽셀이 정사각형으로 유지되므로 가로 또는 세로 방향으로 늘어나지 않습니다.

이 가이드에서는 Camera2 개발자가 고려해야 할 사항과 다양한 폴더블 기기 상태에 맞게 카메라 미리보기 렌더링을 조정하는 단계를 설명합니다.

기기 상태 스위치가 카메라에 미치는 영향

폴더블 기기에는 다음이 포함될 수 있습니다.

  • 실제 디스플레이 2대 이상
  • 여러 개의 실제 카메라 기기

이러한 기기는 기기 상태에 따라 활성화될 수 있습니다. 기기 상태 처리를 간소화하기 위해 일부 기기는 2개 이상의 물리적 센서로 구성된 논리 카메라를 구현합니다.

개발자가 이러한 논리 카메라 기기에서 미리보기 스트리밍을 열고 사용 설정하면 카메라는 특정 폴드 상태에 따라 물리적 기기 간에 자동으로 전환됩니다.

예를 들어 디스플레이가 두 개인 폴더블 기기를 생각해 보겠습니다.

  • 세로 모드 방향의 실제 '외부' 전면 카메라가 있는 접힌 상태의 일반 세로 모드 화면
  • 펼쳐진 디스플레이를 기준으로 가로 모드 방향의 '내부' 전면 물리적 카메라가 있는 펼쳐진 상태에서 사용 설정된 폴더블 화면

애플리케이션이 전면 논리 카메라에서 스트리밍하는 동안 사용자가 기기를 접거나 펼치면 기기 구현은 각 기기 상태 전환에 응답하여 내부 및 외부 물리적 센서 간에 전환할 수 있습니다.

디스플레이 전환을 위해 애플리케이션에서 UI를 조정해야 할 수 있습니다.

개발자는 UI 조정과 함께 활성 물리적 카메라와 관련하여 카메라 미리보기가 렌더링되는 방식을 조정해야 할 수 있습니다.

실제 카메라 기기 스위치

논리 카메라 기기 인터페이스는 물리적 카메라 스위치를 처리하는 데 필요한 API를 제공합니다. 개발자는 활성 물리적 ID의 값을 모니터링해야 합니다.

폴더블 기기에서 활성 상태의 신분증 캡처 결과는 접기 및 펼치기와 같은 다양한 폴더블 상태 전환에 따라 변경될 수 있습니다.

이러한 경우 개발자는 현재 활성 상태의 실제 ID를 사용하고 상응하는 카메라 특성을 확인해야 합니다.

미리보기 렌더링을 변경하고 영향을 줄 수 있는 가장 중요한 두 가지 카메라 특성은 센서 방향렌즈 방향입니다.

애플리케이션의 미리보기 렌더링 파이프라인이 최종 변환 행렬을 계산하기 위해 정적 카메라 매개변수에 종속되는 경우 현재 값을 전달하고 그래픽 변환을 업데이트해야 합니다.

카메라 미리보기 파이프라인과 변환이 계산되는 방식을 자세히 알아보려면 카메라 미리보기 가이드를 참고하세요.

추가로 잘못된 가정

카메라 특성 값을 캐시하지 않는 것이 좋습니다.

기기가 접히거나 펼쳐질 때 카메라 특성이 달라질 수 있으므로 카메라 특성이 일정하게 유지된다고 가정할 수 없습니다. 따라서 카메라 특성을 저장하고 재사용해서는 안 됩니다. 대신 매번 카메라 특성을 확인합니다.

카메라 애플리케이션이 외부 전면 디스플레이에서 시작되고 현재 전면 및 후면 카메라 특성을 캐시하는 경우를 생각해 보세요. 애플리케이션이 내부 디스플레이에서 다시 시작되면 활성 전면 물리적 센서의 방향이 달라질 수 있으므로 원치 않는 미리보기 렌더링 부작용이 발생할 수 있습니다.