Repository navigation
Releases: TTolsun/hal-camera
Release list
HAL CAM 0.30.0 — Multi CLI
HAL CAM 0.30.0
CLI에서 여러 독립 카메라의 프리뷰·사진·녹화를 실행하고, 카메라별 파일을 PC로 회수할 수 있습니다. APK와 함께 배포하는 CLI 스킬을 갱신하세요. Python 클라이언트는 0.5.0입니다.
달라진 점
multi cameras에서 조합과 크기를 고른 뒤multi preview|capture|record --cameras 1,0 [--engine Camera2|CameraX]로 실행합니다.--preview-sizes와--photo-sizes는 같은 카메라 순서의 목록입니다. 지원하지 않는 조합·크기를 자동 대체하지 않습니다.- Multi 녹화는 기본으로 마이크 소리를 포함합니다.
--no-audio이면 마이크 권한 없이 녹화하며,record stop으로 종료합니다.live info,events,preview stop도 현재 Multi 화면에 적용됩니다. - 사진 일부가 실패해도 성공한 파일을 회수할 수 있습니다. 결과의
cameras에서 카메라별 저장 여부와 오류를 확인하세요. 회수 파일 이름에는 요청 ID와 카메라 ID가 들어갑니다. - 녹화 준비 중 정지 요청을 보관하여 실제 시작 뒤 적용합니다. Dual·Multi에서 새 명령을 위해 Live로 돌아갈 때도 기존 카메라의 닫기 완료를 기다립니다.
- 최근 CLI 개선인 보관 요청 목록과
halcam wait REQUEST_ID, 공백이 있는 ADB 라벨의 인용 안내도 포함합니다.
업데이트와 한계
HAL-Camera-0.30.0.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 691이며 기존 정식 서명을 사용합니다. 앱을 삭제하지 않아야 기존 기록과 설정을 유지할 수 있습니다.
Multi는 Android 11 이상이 필요하고 CameraX는 최대 두 카메라를 지원합니다. 녹화는 기존 Multi의 전체 묶음 저장 규칙을 따릅니다. 영상 하나라도 실패하면 묶음을 롤백합니다. Multi의 카메라별 수동 제어·측광, 녹화 중 사진, CLI 배치 지정은 이번 범위에 포함하지 않습니다. 센서 동시 촬영이나 영상·소리 동기의 새 보장은 없습니다.
사용법은 CLI 가이드, 검증 범위는 0.30.0 검증 기록을 확인하세요.
구현과 검증: PR #318. Python CLI는 함께 첨부한 halcamera_cli-0.5.0-py3-none-any.whl로 설치할 수 있습니다.
HAL CAM 0.29.2 — Lint cleanup
HAL CAM 0.29.2
Android lint 경고를 0개로 정리하고, 녹화 코드의 중복을 줄인 유지보수 릴리스입니다. 촬영·녹화 동작은 0.29.1과 같습니다.
달라진 점
- lint 경고 132개를 처리했습니다. 77개는 코드를 고쳤고, 55개는 제품 결정(세로 고정, 번역 없음)과 도구 제약에 따라 근거를 적고 억제했습니다.
- Android 13 이상에서 테마 아이콘을 켜면 로봇 모양의 단색 아이콘이 표시됩니다.
- Multi V의 마이크 인코더와 영상 인코더가 같은
EncoderTrack으로 MP4에 기록합니다. 화면 회전 각도 변환은DisplayRotation한 곳에서 처리합니다. activity-ktx1.13.0,core-ktx1.18.0으로 올렸습니다.
업데이트와 한계
HAL-Camera-0.29.2.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 685이며 기존 정식 서명을 사용합니다. 앱을 삭제하지 않아야 기존 기록과 설정을 유지할 수 있습니다.
대화면(sw600dp 이상) Android 16 기기에서는 세로 고정이 무시될 수 있습니다. 영상·소리 동기의 잔여 오차는 0.29.1과 같습니다.
판단 근거는 lint 검토 기록, 기기 확인은 0.29.2 검증 기록을 참고하세요.
HAL CAM 0.29.1 — Multi audio/video sync
HAL CAM 0.29.1
Multi V에서 오디오가 영상보다 약 0.3초 먼저 끝나는 문제와 시작 시각 정렬을 개선했습니다. Camera2와 CameraX가 같은 녹화 경로를 사용합니다.
달라진 점
- 모든 카메라의 영상 입력을 먼저 멈춘 뒤 마이크와 인코더를 마무리합니다. 오디오 종료를 기다리는 동안 영상만 계속 길어지지 않습니다.
- 마이크의 하드웨어 시각과 실제 인코딩된 첫 영상 프레임의 시각을 기준으로 각 원본의 오디오를 정렬합니다. 기기별 고정 보정값이나 소리 늘이기를 적용하지 않습니다.
- 마이크 준비·종료는 별도 작업 스레드에서 처리합니다. 시각을 확보하지 못하거나 인코딩·결합이 실패하면 무음 성공으로 처리하지 않습니다.
- Multi P/V 전환의 스트림 재구성, 카메라별 크기·FPS/EXP, 카메라 ID 이동과 독립 원본 저장을 유지합니다.
업데이트와 한계
HAL-Camera-0.29.1.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 684이며 기존 정식 서명을 사용합니다. 앱을 삭제하지 않아야 기존 기록과 설정을 유지할 수 있습니다.
Galaxy S25+의 박수 시험에서 영상·오디오 끝 시각의 차이는 네 파일 모두 21ms 이내였습니다. 실제 손 접촉과 소리에는 대략 30~80ms의 잔여 오차가 관찰됐으므로 완전한 동기를 보장하는 릴리스는 아닙니다. 기존 영상은 변경하지 않습니다.
측정 방법과 기기 제약은 0.29.1 검증 기록, 사용법은 Live 가이드를 참고하세요.
HAL CAM 0.29.0 — CameraX Multi and microphone audio
HAL CAM 0.29.0
CameraX Multi 촬영과 Multi V의 마이크 녹음을 추가했습니다. Camera2와 CameraX 모두 카메라별 원본 영상에 같은 마이크 소리를 저장합니다.
달라진 점
- Multi에서 Camera2와 CameraX를 선택할 수 있습니다. CameraX는 기기가 광고한 동시 조합의 최대 두 카메라를 사용합니다.
- Multi V는 마이크 권한을 요청하고 AAC 오디오를 각 MP4에 넣습니다. 녹음이나 저장이 실패하면 무음 성공으로 처리하지 않습니다.
- Multi P/V 전환 시 스트림 재구성, 카메라별 크기·FPS/EXP, 카메라 ID 드래그와 카메라별 JPEG 저장은 유지합니다.
- 두 엔진이 녹화·오디오 결합·실패 처리를 공유하도록 분리하고, 오디오 시각 정렬 회귀 테스트를 추가했습니다.
업데이트
HAL-Camera-0.29.0.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 683이며 기존 정식 서명을 사용합니다. 앱을 삭제하지 않아야 실행 기록과 설정을 유지할 수 있습니다.
기존 무음 영상의 소리가 복원되지는 않습니다. 새로 녹화한 영상부터 소리가 포함됩니다. 카메라별 독립 마이크 녹음이나 센서 동기 촬영은 제공하지 않습니다.
검증 범위와 제약은 0.29.0 검증 기록, 사용법은 Live 가이드를 참고하세요.
HAL CAM 0.28.0
HAL CAM 0.28.0
전체 코드·문서 검토와 lint 정리를 반영한 유지보수 릴리스입니다. 0.27.0의 Multi 조작과 카메라별 크기·FPS/EXP, P/V 전환 시 스트림 재구성은 유지합니다.
달라진 점
- PC 집계 도구가 현재 schema 5 결과와 녹화 누락 플래그를 앱과 같은 규칙으로 처리합니다. CSV·유효성·읽기 버전 계약의 차이를 CI에서 검사합니다.
- 미사용 코드와 CTS 화면의 중복 구성을 정리하고, 현재 동작과 어긋난 문서 설명을 갱신했습니다.
- EXIF를 AndroidX로 전환하고 Live 제어판·결과 막대의 그리기 중 Path 할당을 줄였습니다. 기존 백업 제외 정책을 Android 12 이상 기기 이전 규칙에도 명시했습니다.
- lint 159개를 모두 검토했습니다. 실제 수정 9개와 오탐 한정 억제 18개를 반영해 오류 0개·경고 132개가 남았습니다. 나머지 경고의 근거는 검토 기록에 보관합니다.
- 홈페이지에 GitHub Releases로 연결되는 다운로드 페이지를 추가했습니다.
업데이트
HAL-Camera-0.28.0.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 682이며 기존 정식 서명을 사용합니다. 앱을 삭제하지 않아야 내부 실행 기록과 설정을 유지할 수 있습니다.
ADB 지침은 함께 배포하는 halcam-cli-0.28.0-SKILL.md를 사용하세요. APK와 스킬 파일의 SHA-256은 SHA256SUMS.txt에 제공합니다.
확인 범위
JVM·문서·기기 검사와 업데이트 결과는 0.28.0 검증 기록에 있습니다. Android 8·8.1 실기기, 실제 OS 백업 복원, 대화면 회전, 다른 제조사·세 카메라 이상·장시간 녹화는 이번 검증에 포함되지 않습니다.
사용 방법은 Live 가이드를 참고하세요.
HAL CAM 0.27.0
HAL CAM 0.27.0
Multi를 Photo와 같은 흐름으로 조작하면서 카메라별 크기와 배치를 유지합니다. 기본은 Side by side이며 카메라 ID를 길게 눌러 끌면 배치와 순서를 바꿀 수 있습니다.
달라진 점
- 선택한 카메라 ID에 흰 테두리와 체크를 표시하고 Live의 해당 크기를 강조합니다. 카메라 수와 관계없이 크기를 한 줄씩 표시합니다.
- Sizes에서 카메라별 Preview와 JPEG 크기를 나란히 고릅니다. Split의 미지원 조합은 펼쳐서 확인할 수 있으며 별도 레이아웃 선택은 없습니다.
- Multi P/V는 같은 조작 구성을 사용하고, 전환할 때 기존 세션이 닫힌 뒤 스트림을 다시 구성합니다. 카메라별 FPS/EXP와 선택한 크기를 유지합니다.
- 선택창의 중복 상태 처리를 공통화하고 미사용 아이콘 5개를 제거했습니다. README·상태·Callback 문서의 낡은 Multi 설명을 정리했습니다.
- 홈페이지의 Camera HAL 소개 영상과 장면 설명을 갱신했습니다.
업데이트
HAL-Camera-0.27.0.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 681이며 기존 정식 인증서를 사용합니다. 앱을 삭제할 필요가 없습니다.
ADB 지침은 첨부한 halcam-cli-0.27.0-SKILL.md를 사용하세요. 첨부 파일 해시는 SHA256SUMS.txt에 제공합니다.
확인 범위
코드·문서 구조 검토와 정식 APK 검사 결과는 0.27.0 검증 기록에 모았습니다. Multi는 Android 11 이상과 기기가 지원하는 독립 카메라 조합이 필요하며, 영상은 무음입니다. 세 카메라 이상·다른 제조사·장시간 녹화는 별도 검증이 필요합니다.
다음 단계는 Live의 Multi 촬영을 참고하세요.
HAL CAM 0.26.0
HAL CAM 0.26.0
화면은 나눠 보고, 파일은 각각 남기세요. Multi P·V가 Photo·Video와 같은 조작 흐름을 사용하며, Split으로 배치와 카메라를 고릅니다. 각 파일에는 자기 카메라의 전체 영상만 들어갑니다.
바로 해 볼 세 가지
Multi · P → Split에서 전면·후면 조합을 고르고Apply를 누릅니다. 한 번 찍은 뒤 갤러리에서 두 원본을 확인하세요.- Split을 위아래에서 좌우로 바꿔 다시 찍습니다. 배치는 바뀌어도 파일의 크기와 전체 구도는 유지됩니다.
Multi · V로 녹화하다 오른쪽 사진 버튼을 누릅니다. 사진을 저장하는 동안 두 영상은 계속 녹화됩니다.
달라진 점
- 조작: Manual을 제외하고 줌·터치 초점·AF·AE·EV를 제공합니다. Callback의 ID로 장치를 바꾸며, Gallery·Lab 복귀 후 프리뷰를 복원합니다.
- 코드: Split 선택 규칙·설정창·장치 조회를 분리했습니다. 사용하지 않는 Multi PIP 경로와 중복 버튼 구성을 정리했고, 저장 실패는 문자열 대신 결과 상태로 전달합니다.
- 문서: PIP와 Multi의 저장 결과를 구분했습니다. 짧은 따라 하기와 확인할 결과를 먼저 보여주며 내부 동작은 펼쳐서 읽습니다. 낡은 Callback·Multi PIP 설명을 수정했습니다.
업데이트
HAL-Camera-0.26.0.apk를 기존 앱 위에 설치하세요. 패키지는 dev.halcamera, versionCode는 672입니다. 같은 정식 인증서로 서명하며 기존 데이터를 유지합니다.
ADB 지침은 이 태그의 halcam-cli-0.26.0-SKILL.md입니다. 선택 도구인 Python CLI는 0.3.0을 유지합니다. 첨부 파일 해시는 SHA256SUMS.txt에 있습니다.
확인 범위
Galaxy S25+ · Android 16에서 실제 버튼 조작과 카메라별 JPEG·MP4를 확인했습니다. JVM·lint·문서 검사와 구조 검토는 0.26.0 검증 기록에 있습니다.
Multi는 Android 11 이상과 기기가 지원하는 독립 장치 조합이 필요합니다. Camera2로 동작하며 영상은 무음, 플래시는 Off·Torch입니다. Manual·AEB와 센서 동기 촬영은 제공하지 않습니다. 세 카메라 이상, 다른 제조사와 장시간 녹화는 이번 기기 검증 범위에 포함하지 않습니다.
다음 단계: Live의 Multi 촬영을 따라 해 보세요.
HAL CAM 0.25.0
HAL CAM 0.25.0
PIP로 한 번 찍고, 합성 사진과 두 카메라 원본을 비교해 보세요.
- JPEG On의 PIP 촬영은 합성·메인·보조 사진을 저장합니다. JPEG Off에서는 합성 사진을 유지합니다.
- PIP 보조 스트림 크기를 Live Streams에서 선택하고 Live에서 확인합니다. 꺼진 출력은 표시하지 않습니다.
- Callback에는 HAL 출력만 표시합니다. 앱 JPEG 변환과 PIP 합성 인코더는 제외합니다.
- 요청 대상 추적·Live 표시·Dual 출력 정의의 중복을 공통 Kotlin 정책으로 정리했습니다.
- 가이드는 시작 메뉴 네 개와 짧은 실험 세 개로 구성하고 반복 설명을 통합했습니다.
설치: HAL-Camera-0.25.0.apk를 기존 앱 위에 설치하세요. 앱 데이터 보존을 위해 삭제하지 마세요. versionCode 671, 기존 배포와 같은 서명입니다.
검증: 앱 JVM 795개 + CTS vendor JVM 12개, lint, 문서 회귀 33개, 문서 검사 7단계. Galaxy S25+ Android 16에서 PIP 세 장 저장, YUV 사진, Camera2/CameraX 녹화와 Camera2 Dual 사진·녹화를 확인했습니다. Exynos·전체 CTS·장시간 녹화는 이번 검증 범위에 포함하지 않았습니다.
ADB 지침은 halcam-cli-0.25.0-SKILL.md, Python CLI는 기존 0.3.0입니다. 파일 해시는 SHA256SUMS.txt에서 확인하세요.
HAL CAM 0.24.0
HAL CAM 0.24.0
Video를 고르고 녹화하면서 줌을 바꿔 보세요. 이번 버전은 녹화 출력을 미리 준비하고, 녹화 중 사진과 PIP 촬영을 Photo와 같은 조작 방식으로 정리했습니다.
바로 해 볼 세 가지
Video → 녹화후 1배 → 2배 → 1배로 바꿉니다. 핀치와 줌 버튼 모두 녹화 중에 동작합니다.- 녹화 중 셔터 오른쪽 사진 버튼을 누릅니다. 일반 녹화는 카메라 JPEG 또는 YUV 변환 JPEG, PIP는 합성 JPEG를 저장합니다.
- Camera2에서
M → WB → WB 값 버튼을 누릅니다. 버튼 아래 목록에서 Daylight와 Incandescent를 번갈아 선택해 같은 장면의 색을 비교합니다.
달라진 점
- 녹화 시작: Video에 들어갈 때 출력을 준비합니다. 녹화 버튼에서는 카메라 세션을 다시 구성하거나 CameraX use case를 다시 bind하지 않습니다.
- PIP와 Multi: PIP는 보조 영상을 한 파일에 합성하고, Multi는 독립 카메라별 파일을 저장합니다. 지원 조합에서 사용할 수 있으며 Multi 영상은 무음입니다.
- 촬영 모드: Video에서는 DNG를 끄고, Photo에서는 손떨림 보정을 Off로 고정합니다. 모드·엔진을 바꾸면 촬영 설정을 초기화합니다.
- 안정성: 준비된 인코더의 오류도 자원을 해제하고 복구합니다. PIP는 기존 인코더 해제 후 다음 녹화를 준비합니다. 명시적인 EIS 녹화에서 확인한 버퍼 전달 오류도 수정했습니다.
- 설명과 화면: WB를 연결된 목록으로 바꾸고, Live 정보와 줌 표시를 정리했습니다. 사용 가이드는 촬영 절차를 먼저 보여 주며 구현 상세는 필요한 곳에서 펼칩니다.
업데이트
HAL-Camera-0.24.0.apk를 기존 앱 위에 설치하세요. 앱을 삭제할 필요가 없습니다. 패키지는 dev.halcamera, versionCode는 670이며 Android 8.0 이상을 지원합니다. PIP·Multi는 Android 11 이상과 지원되는 기기 조합이 필요합니다.
ADB 사용 지침은 첨부한 halcam-cli-0.24.0-SKILL.md입니다. 이 태그의 skills/halcam-cli/SKILL.md와 같은 파일입니다. 선택 도구인 Python CLI 0.3.0은 halcamera-cli-0.3.0.zip으로 제공하며 기본 사용에는 ADB만 필요합니다. 파일 해시는 SHA256SUMS.txt에서 확인하세요.
확인한 범위와 제한
JVM 764개(app 752개·ctsvendor 12개), lint와 정식 빌드가 통과했습니다. 기존 정식 인증서와 동일한 서명을 확인하고 기기의 CLI hello에서 0.24.0을 확인했습니다.
Galaxy S25+ (SM-S936N), Android 16/API 36에서 PHOTO 보정 2개와 VIDEO 10개 조합, 녹화 중 줌·스냅샷, PIP 연속 녹화와 WB 조작을 확인했습니다. 준비 완료 인코더 오류는 실제 인코더·세션에 오류 콜백을 주입해 해제와 프리뷰 복구를 검사했습니다.
세션을 유지한다는 결과가 화면 프레임 누락이 전혀 없다는 뜻은 아닙니다. CameraX 스냅샷은 일부 기기에서 영상 프레임 간격을 늘릴 수 있습니다. PIP 스냅샷은 합성 해상도를 사용하며 일반 JPEG/YUV 크기 선택과 별개입니다. 다른 제조사 기기, 전체 CTS와 장시간 Benchmark는 이번 배포 검증 범위에 포함하지 않았습니다.
HAL CAM 0.23.0
HAL CAM 0.23.0
Live에서 셔터를 길게 눌러 연사하고 AEB로 노출 브래킷을 촬영할 수 있습니다. Dual 사진과 촬영·저장 데이터 관리 CLI를 확장했습니다. Live의 상시 설명을 줄이고 원래 버튼 배치를 복원했습니다.
Installation
HAL-Camera-0.23.0.apk를 기존 앱 위에 설치합니다. 패키지는 dev.halcamera, versionCode는 660이며 Android 8.0 이상을 지원합니다. 기존 정식 인증서로 서명했으므로 앱을 삭제하지 않고 업데이트할 수 있습니다.
CLI 사용 지침은 함께 첨부한 halcam-cli-0.23.0-SKILL.md입니다. 이 릴리스 태그의 skills/halcam-cli/SKILL.md와 같은 파일이며, 기본 사용에는 PC의 ADB만 필요합니다. 선택 도구인 Python CLI 0.3.0 소스는 halcamera-cli-0.3.0.zip으로 제공합니다. 압축을 푼 폴더에서 python -m pip install .로 설치합니다. 파일 해시는 SHA256SUMS.txt에 있습니다.
Changes
- Live 셔터를 누르고 있는 동안 연사합니다. AEB 제어에서 노출 브래킷을 촬영하고 가능한 경우 합성 HDR 이미지를 함께 저장합니다. 합성을 건너뛰면 이유를 표시하고 Gallery에서 브래킷 파일을 구분합니다.
- Dual에 메인 카메라 제어, 공통 줌과 두 카메라 사진 저장을 연결했습니다.
- 촬영·스트림·수동 제어·연사·AEB·Dual뿐 아니라 Gallery 파일, 결과 비교와 baseline 지정, 진단 ZIP, 보관 설정도 CLI로 조작할 수 있습니다. 삭제와 baseline 지정은 명시적 작업입니다.
- CLI의 시작 도움말을 줄이고 진행 상태, 저장 위치와 오류 후 다음 명령을 안내합니다. 취소·실패 후에도 저장된 파일을 회수할 수 있습니다.
- Live의 셔터 설명과 사진·영상 라벨을 제거하고 갤러리·셔터·줌 배치를 복원했습니다. Live와 Dual의 앱 문구를 영어로 통일했으며 촬영 진행·결과·오류는 필요한 시점에 표시합니다.
- 사용자 가이드의 작업별 탐색, 설명 그림과 전체 검색을 개선했습니다.
Validation and limits
정식 APK에서 JVM 테스트 총 705개(app 693개·ctsvendor 12개), Android lint와 release 빌드가 통과했습니다. APK의 패키지, 버전, minSdk 26, targetSdk 36, 비디버그 설정과 서명을 확인했습니다. 인증서 SHA-256은 기존 릴리스와 같은 f2432413635645cc35e674e498e88ff518abb878065c21f17bb3c2128487b5c1입니다.
Galaxy S25+ SM-S936N · Android 16/API 36에 정식 APK를 데이터 보존 업데이트로 설치했습니다. 앱의 정상 실행과 CLI hello의 app_version: 0.23.0, 확장 명령 목록을 확인했습니다. 촬영과 UI의 상세 검증은 아래 기능 PR 검증 기록에 있으며, 이번 버전 번호 변경 후 전체 CTS와 장시간 Benchmark를 다시 실행하지 않았습니다. 다른 기기·Android 버전, 모든 오류 조건과 접근성 설정을 실기기에서 검증한 것은 아닙니다.
Dual은 지원되는 카메라 조합에서만 동작하며 센서 동기화를 보장하지 않습니다. AEB 합성은 장면 움직임과 카메라 지원에 영향을 받습니다. 권한 승인·잠금 해제·공유 대상 선택 등 Android가 요구하는 사용자 조작은 화면에서 수행합니다.