HAL CAMERA / User Guide

The same test, inside the app.

지원한다고 적힌 촬영 조합은 실제로도 동작할까요.

Lab → CTS에서 확인할 항목을 골라 실행해 보세요. 카메라를 열고, 사진을 찍고, 녹화한 결과를 판정과 함께 읽습니다.

앱의 결과는 사전 점검용입니다. 공식 CTS 판정은 cts-tradefed의 test_result.xml로 확인합니다.

선택한 항목을 실행하세요

  1. Live의 Lab → CTS를 엽니다.
  2. Custom Checks 또는 AOSP CTS를 고릅니다. 원문 케이스는 Android 14 이상에서 사용할 수 있습니다. 방식 비교에서 차이를 확인하세요.
  3. 실행할 항목을 체크합니다. 하단에서 선택 개수와 예상 시간을 확인합니다.
  4. Run Selected (선택 개수)를 누르고 필요한 권한을 허용합니다.
  5. 끝난 카드를 눌러 결과를 확인합니다.

결과에는 판정과 소요 시간이 남습니다. 실패나 SKIP은 판정 읽기에서 확인하세요.

권한·예상 시간·실행 순서

이력이 없는 원문 메서드의 예상 시간은 시간 미상입니다. 진행 중에는 단계별 결과가 추가되고, 완료 후 판정과 소요 시간이 남습니다.

항목 하나만 보려면 행의 ›를 누릅니다. 단일 항목도 Run·Stop·Copy·Share로 조작합니다.

커스텀 케이스는 한 단계가 실패해도 나머지를 계속 실행합니다. CTS 원문은 중단 처리에 몇 초가 걸릴 수 있습니다.

검사 방식의 차이

CTS 판정과 Benchmark의 성능 저하 판정은 별개입니다.

스크린샷은 당시 빌드의 기록입니다. 촬영 기기·버전·확인 범위를 함께 읽으세요.

커스텀 케이스를 선택하세요

횟수·시간·통과 조건

빠른 켜기·끄기 · custom#FastOnOff

표준 열기와 빠른 열기를 5회씩 번갈아 수행합니다.

첫 프레임의 SENSOR_TIMESTAMP와 프레임 번호를 검사합니다. 마지막 줄에는 두 방식의 첫 프레임 중앙값을 비교합니다.

카메라 전환 · custom#Switching

카메라를 차례로 열어 첫 프레임을 받고 닫는 전환을 5회 반복합니다.

그 뒤 카메라마다 가장 큰 CamcorderProfile로 3초 녹화합니다. 녹화는 파일·트랙·크기와 길이 오차 20 %만 검사합니다.

모든 크기 켜기·끄기 · custom#AllSizeOnOff

SurfaceHolder로 보고하는 프리뷰 크기 전부를 큰 것부터 하나씩 열어 첫 프레임을 확인합니다. 1080p 상한을 두지 않습니다.

정지 영상 × 프리뷰 조합 · custom#StillPreviewCombination

JPEG 크기 전부와 프리뷰 크기(1080p 이하) 전부의 조합마다 세션을 구성합니다.

프리뷰 첫 프레임 뒤 정지 영상을 한 장 찍고, 요청한 크기의 디코딩 가능한 JPEG인지 검사합니다.

StillCaptureTest#testStillPreviewCombination의 순서와 QCIF 예외를 따르되 AE·AF 수렴은 기다리지 않습니다.

동영상 스냅샷 · custom#VideoSnapshot

가장 큰 CamcorderProfile로 25초를 녹화합니다. 5~20초 사이 무작위 시점에 같은 세션으로 JPEG 스냅샷을 한 장 찍습니다.

동영상은 RecordingTest#testVideoSnapshot의 프레임 드롭률 8 %(15 MP 초과 스냅샷은 12 %)를 검사합니다.

스냅샷은 크기와 디코딩을 검사합니다.

실제 화면 보기
CTS 커스텀 케이스 목록에서 빠른 켜기 끄기 선택
커스텀 케이스에서 빠른 켜기·끄기 한 개를 선택했습니다. 하단 실행 버튼은 선택한 항목 수를 표시합니다.
커스텀 검사와 CTS 원본의 관계

custom# 원본은 CTS 클래스에 그대로 대응하는 메서드가 없는 케이스입니다. 검사 문구는 CTS CameraTestUtils에 같은 검사가 있으면 그 문구를 따릅니다.

RecordingTest#testBasicRecording은 CTS 원문 케이스로만 제공합니다.

녹화 판정 규칙(BasicRecordingRules)은 카메라 전환과 동영상 스냅샷이 공유합니다.

CTS 원문 메서드를 선택하세요

업스트림 본문이 TODO뿐인 testCameraRecorderOrdering·testMediaCodecRecording·testTimelapseRecording은 목록에서 제외합니다.

측정 이력이 없는 메서드는 시간 미상으로 표시합니다. UiAutomation이나 @TestApi가 필요한 메서드는 초기화 단계에서 실패할 수 있습니다.

기존 기기별 결과와 소요 시간은 Validation에 있습니다.

실제 화면 보기
CTS 원문 메서드 선택 목록
AOSP 원문 메서드 목록을 연 화면입니다. 이 장면에서는 항목을 선택하거나 원문 테스트를 실행하지 않았습니다.
실제 화면 보기
빠른 켜기 끄기 CTS 검사 실행 중
빠른 켜기·끄기를 실행 중인 화면입니다. 카메라 프리뷰와 현재 회차, 단계별 판정을 함께 표시합니다.

판정을 읽으세요

커스텀 케이스는 카메라와 단계별로 판정합니다. PASS 행에도 시간과 수치를 남깁니다.

카메라·단계 이름 읽기

카메라는 Camera · 0처럼 표시하고, 단계는 다음처럼 구분합니다.

PASS에도 소요 시간·녹화 길이·프레임 수가 남습니다. FAIL은 CTS assertion 메시지와 대조하세요.

CTS 원문은 테스트 메서드 단위로 판정합니다. SKIP은 통과했다는 뜻이 아닙니다.

SKIP 이유와 로그 읽기

앱은 openDevice 호출 기록으로 카메라를 실제로 열었는지 확인합니다.

원문에서 모든 카메라를 continue로 건너뛰고 통과한 경우도 앱에서는 SKIP으로 표시합니다.

건너뛴 이유 카드는 다음 근거를 모읍니다.

  1. assumption 메시지를 표시합니다.

  2. 테스트가 남긴 “… skipping” 로그를 표시합니다.

    예를 들어 Camera 0 does not support HEIC_ULTRAHDR, skipping은 카메라 0이 해당 형식을 지원하지 않는다는 뜻입니다.

  3. SkipDiagnosis가 원문의 continue 조건을 다시 확인한 키와 값을 표시합니다.

    HEIC UltraHDR 검사라면 SCALER_STREAM_CONFIGURATION_MAP에 ImageFormat.HEIC_ULTRAHDR(0x48455548)가 있는지와 실제 출력 형식 목록을 보여 줍니다.

모든 카메라의 이유가 같으면 한 줄로, 다르면 카메라별로 표시합니다.

업스트림 코드 자체가 카메라를 열지 않는 메서드도 이유를 남깁니다. 예를 들어 10비트 AV1 경로는 getDynamicRangeProfile()의 switch에 AV1 case가 없습니다.

앱은 자기 프로세스의 logcat만 읽습니다. 카메라별·프로파일별 세부 정보가 모두 남는 것은 아닙니다.

실패 카드에는 예외 메시지와 CTS 호출 위치 세 줄을 표시합니다. 어느 카메라에서 실패했는지는 메시지의 카메라 ID로 확인하세요.

검사용 동영상은 앱 전용 폴더의 test_video.mp4를 판정 뒤 삭제합니다. 정지 영상·스냅샷도 검사 뒤 버립니다. CTS 원문도 같은 폴더를 사용하며 앨범에는 남기지 않습니다.

실제 화면 보기
빠른 켜기 끄기 CTS 검사 PASS 완료
이번 실행은 35초에 PASS로 끝났습니다. 이 결과는 해당 기기의 앱 내 검사 한 건이며 공식 CTS 인증 결과가 아닙니다.

다음 단계: 같은 조건의 성능 변화는 Benchmark에서 비교하세요.

문서 찾기

어디서 시작할지 모르겠다면

    ↑↓ 선택Enter 열기

    그림 크게 보기

    100%