Camera2 API는 2015년 안드로이드 롤리팝(5.0)과 함께 도입되었지만, 2017년에도 상당수 스마트폰 제조업체들은 여전히 자사 기기에 이 API를 제대로 구현하지 않고 있었습니다. 구글이 기존 레거시 Camera API의 지원을 중단하고 개발자들에게 Camera2 API 적용을 강력히 권장했음에도 불구하고, 완전한 Camera2 API 지원을 갖춘 기기는 극소수의 프리미엄 모델뿐이었습니다. 제조사들은 RAW 포맷 촬영과 같은 Camera2 API의 기능을 구글이 의도한 '보편적인 업그레이드'가 아니라, 고급 기기를 팔기 위한 판매 포인트로 활용하고 있는 듯합니다.
나쁜 소식은 스톡 ROM에 Camera2 API를 간단히 플래싱만으로 추가할 수 없다는 점입니다. ROM을 직접 재빌드해서 Camera2 API 지원을 넣거나, 해당 API가 내장된 커스텀 ROM을 플래싱해야 합니다. 하지만 좋은 소식도 있습니다. 만약 Camera2 API가 ROM에는 포함되어 있는데 제조사가 임의로 비활성화해 둔 것이라면, 이를 되살릴 수 있는 몇 가지 트릭이 존재합니다. 또한 미디어텍(Mediatek) 칩셋 기기라면 RAW 사진을 촬영할 수 있는 네이티브 방법도 있습니다. 지금부터 그 방법들을 하나씩 살펴보겠습니다.
RAW 포맷이란 무엇이며, 왜 Camera2 API가 필요할까?
이 글을 우연히 접하고 RAW 포맷이 무엇인지 모르신다면, 간단히 말해 손실 없는(lossless) 이미지 포맷이라고 생각하시면 됩니다. 음악 파일의 비트레이트를 떠올려 보세요. 120kbps MP3와 320kbps MP3, FLAC 파일의 음질 차이를 알고 계시죠? 아니면 유튜브 영상을 320p로 볼 때와 1080p로 볼 때의 차이처럼요. JPEG와 RAW의 관계도 거의 비슷합니다. 물론 정확히 같은 개념은 아니지만, 이해하기에는 충분한 비유입니다.
RAW 포맷은 이미지 압축 없이 사진을 캡처합니다. 즉, 화질 손실은 전혀 없지만 파일 용량은 훨씬 커집니다. RAW 이미지는 이름 그대로 카메라 센서가 받아낸 순수한 날것(RAW) 데이터이기 때문에, 이미지 편집 소프트웨어에서 후보정 작업을 할 때 훨씬 유리합니다. JPEG 사진과 카메라에서 바로 출력된 RAW 사진을 나란히 놓고 비교하면, JPEG 쪽이 색감이 더 화사하거나 시각적으로 매끄러워 보일 수 있습니다. 이는 JPEG가 카메라 소프트웨어에 의해 사후 처리(post-processing)되어 그 결과물이 이미지 데이터 자체에 반영되었기 때문입니다.

따라서 편집하지 않은 RAW 파일은 JPEG와 비교했을 때 오히려 투박하게 느껴질 수 있습니다. 하지만 이미지 보정을 즐기는 사용자에게는 카메라 소프트웨어의 '후처리'가 빠져 있다는 점이야말로 가장 큰 장점입니다. 후보정 과정 전체를 온전히 내 손으로 통제할 수 있기 때문입니다. JPEG에는 카메라 소프트웨어가 적용한 후처리 '매직'이 이미 박혀 있어 이를 되돌리기 어렵지만, RAW 사진은 JPEG보다 훨씬 폭넓게 보정하고 향상시킬 수 있습니다.
build.prop 수정으로 Camera2 API 활성화하기
주의: 작업 전 반드시 build.prop 파일을 백업해 두세요. 문제가 생겼을 때 복구할 수 있는 유일한 방법입니다.
이 방법은 성공 확률이 대략 50% 정도이지만, 시도해 볼 가치는 충분합니다. 일부 제조사는 Camera2 API를 ROM에 포함시켜 두고도 특정 사유로 인해 비활성화해 두는 경우가 있습니다. 이럴 때 안드로이드 기기 /system 파티션의 build.prop 파일에 한 줄만 추가하면 Camera2 API 기능을 활성화할 수 있습니다.
참고: 안드로이드 build.prop 필수 트윅 편집 방법도 함께 확인해 보세요.
먼저 루팅된 폰과 build.prop 파일을 편집할 수 있는 수단이 필요합니다. 루트 파일 탐색기 앱(예: ES 파일 탐색기)으로 /system 파티션에 접근해 build.prop을 텍스트 편집기로 열어도 되고, JRummy BuildProp Editor처럼 build.prop 전용 편집 앱을 사용해도 좋습니다.

build.prop 파일을 연 뒤 다음 문자열을 검색해 보세요.
persist.camera.HAL3.enabled=0
값을 0에서 1로 변경한 뒤 저장하고 종료한 후, 폰을 재부팅합니다. 만약 해당 문자열이 build.prop에 존재하지 않는다면, 파일 맨 아래에 persist.camera.HAL3.enabled=1을 직접 추가한 뒤 저장하고 재부팅하세요. 재부팅 후 Open Camera나 Camera FV-5 같은 서드파티 카메라 앱을 실행하여 설정 메뉴에서 Camera2 API 모드를 활성화할 수 있는지 확인하면 성공 여부를 알 수 있습니다.
터미널 에뮬레이터로 Camera2 API 활성화하기
위 방법의 대안으로, 터미널 에뮬레이터(Terminal Emulator)를 통해 Camera2 API를 활성화해 볼 수도 있습니다. 터미널을 실행하고 아래 명령어를 차례로 입력하세요.
su
su persist.camera.HAL3.enabled 1
exit
exit
폰을 재부팅한 뒤, Open Camera나 Camera FV-5 같은 서드파티 카메라 앱으로 Camera2 API가 정상적으로 활성화되었는지 확인합니다.
미디어텍 엔지니어 모드에서 RAW 사진 촬영하기
미디어텍(MTK) 칩셋을 탑재한 기기라면, Camera2 API를 활성화하지 않아도 엔지니어 모드(Engineer Mode)를 통해 RAW 사진을 촬영할 수 있습니다. 엔지니어 모드에 진입하는 방법은 여러 가지가 있습니다.
가장 간단한 방법은 폰의 전화 걸기 앱을 열고 다음 번호를 입력하는 것입니다. *#*#3646633#*#*
또는 MTK Engineering Mode 같은 앱을 설치해 홈 화면에 바로가기 아이콘을 만들어 둘 수도 있습니다. Xposed 프레임워크와 GravityBox 모듈(참고: Xposed 모듈로 안드로이드 테마 완전 변경하기)을 설치해도 엔지니어 모드 진입 경로가 제공됩니다.

어떤 방법으로든 엔지니어 모드에 진입했다면, 오른쪽으로 화면을 넘겨 Hardware Testing > Camera 메뉴로 이동하세요. 이곳은 카메라 하드웨어의 테스트 모드이지만, RAW 포맷을 포함한 다양한 카메라 옵션을 켜고 실제로 사진을 찍을 수 있습니다.
엔지니어 모드에서 RAW 사진을 촬영하면 /DCIM/CameraEM/ 디렉터리에 두 개의 파일이 저장됩니다. 하나는 미리보기용 JPEG 파일이고, 다른 하나가 실제 RAW 파일입니다. RAW 파일은 안드로이드 폰에서 바로 미리볼 수 없으므로, PC로 내보낸 후 Adobe Photoshop 같은 이미지 편집 소프트웨어로 불러와 보정해야 합니다. 또한 폰이 출력하는 독자 RAW 형식 대신 범용 RAW 포맷으로 변환해야 할 수도 있습니다.