Definition Document (CDD) 호환성 요구사항을 명문화한 일종의 Spec 문서 Compatibility Test Suite (CTS) 비호환성을 조기에 발견하고 호환성을 유지하기 위한 목적의 테스트 Vendor Test Suite (VTS) OS 구현 외의 Vendor Interface 의 호환성과 구현 내용을 테스트 Camera Image Test Suite (ITS) 노출 조건 등 환경에 따라 다양하게 동작하는 카메라 시나리오 테스트
HAL Samsung Camera App HIDL / AIDL Android Camera2 API Android Camera API & Framework Samsung HIDL / AIDL Samsung private API Custom Interface Samsung Framework
Framework Camera HAL Samsung HIDL / AIDL Samsung private API Android Camera2 API Custom Interface HIDL / AIDL Samsung Camera App Android Camera App Samsung Framework
자체적으로 개발하여 사용하던 일부 기능을 구글과 협업하여 public API 로 공개 일반 안드로이드 카메라 앱에서도 사용 가능 Torch Flash Strength Control Stream Use Case Preview Mirror Mode Camera Preview Stabilization Camera Display Sync …
제어를 위한 Camera2 API setTorchMode 함수 (Added in API level 23) + 플래시 조명의 레벨을 변경할 수 있는 신규 메소드 및 콜백 추가 개발자 문서 https://source.android.com/docs/core/camera/torch-strength-control https://developer.android.com/reference/android/hardware/camera2/CameraManager#turnOnTorchWithStrengthLevel(j ava.lang.String,%20int)
= context.getSystemService(CAMERA_SERVICE) as CameraManager val torchCallback = object : TorchCallback() { override fun onTorchModeChanged(cameraId: String, enabled: Boolean) { // get enabled } } // register cameraManager.registerTorchCallback(torchCallback, handler) // 플래시 켜기 cameraManager.setTorchMode(cameraId, true) val defaultLevel = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_DEFAULT_LEVEL) val maxLevel = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL) // 특정 level 로 플래시 켜기 cameraManager.turnOnTorchWithStrengthLevel(cameraId, 3) // 현재 flash level 읽어오기 val currentLevel = cameraManager.getTorchStrengthLevel(id) // return 3 Since API level 23
= context.getSystemService(CAMERA_SERVICE) as CameraManager val torchCallback = object : TorchCallback() { override fun onTorchStrengthLevelChanged(cameraId: String, newStrengthLevel: Int) { // get newStrengthLevel } } // register cameraManager.registerTorchCallback(torchCallback, handler)) // default level 과 max level 값 읽기 val cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId) val defaultLevel = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_DEFAULT_LEVEL) val maxLevel = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_STRENGTH_MAXIMUM_LEVEL) // 특정 level 로 플래시 켜기 cameraManager.turnOnTorchWithStrengthLevel(cameraId, 3) // 현재 flash level 읽어오기 val currentLevel = cameraManager.getTorchStrengthLevel(id) // return 3 Since API level 33 (Android 13)
따라 OutputConfiguration 에 추가로 값을 선언하여 사용 PREVIEW, RECORD, VIDEO_SNAPSHOT, SNAPSHOT, VIDEO_CALL 등 지원 Use Case 에 맞는 output format 선언 필요 Use Case 에 따른 화질 개선, 소모 전류, 성능 최적화 개발자 문서 https://source.android.com/docs/core/camera/stream-config https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#setStreamUseCase(lo ng)
프리뷰 화면의 mirroring 설정 가능 MIRROR_MODE_AUTO 전면 카메라(셀피)의 경우 자동 좌우 반전 (기존과 동일) Galaxy Z Fold 시리즈 Rear Cam Selfie 모드 MIRROR_MODE_H 좌우 반전 적용 Galaxy Z Flip 시리즈 Quick Shot 모드 MIRROR_MODE_V 상하 반전 적용 개발자 문서 https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#setMirrorMode(int)
에 적용 가능한 새로운 설정 값 추가 CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION 녹화 중인 프리뷰 프리뷰 화면 녹화된 화면 PREVIEW_STABILIZATION 적용 WYSIWYG 최대 10% 감소 녹화 중인 화면이 그대로 녹화됨 https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION
Samsung Framework Android Framework CameraX Library Core Extensions OEM Vendor Library AUTO Bokeh HDR Face Retouch Night 카메라 특화 기능 Extensions 개발 초기부터 구글과 협력하여 구체적인 시나리오, Interface 등 설계 및 개발 참여
기존 앱들이 CameraX Extensions 를 사용할 수 있도록 새로운 Camera2 API Interface 를 제공 https://source.android.com/docs/core/camera/camerax-vendor-extensions#architecture
Samsung Camera SDK Samsung Camera SDK Client Android Framework Samsung Camera SDK Samsung Camera SDK Service HDR Super Night Smooth Zoom Super Resolution Video HDR VDIS …