안드로이드에서 통화 녹음이 안 되는 이유
Play 스토어에는 지금도 "통화 녹음"을 표방하는 앱이 여럿 올라와 있습니다. 그런데 실제로 설치해서 써 보면 녹음 버튼을 눌러도 소리가 전혀 담기지 않거나, 재생해 보면 파일 크기가 0바이트에 가까운 경우가 흔합니다. 이건 앱을 잘못 골라서가 아닙니다. 안드로이드 자체가 최근 몇 년 사이 통화 녹음을 구조적으로 막아 왔기 때문입니다.
무슨 일이 일어나고 있나
증상은 대체로 두 가지 형태로 나타납니다. 하나는 녹음 버튼을 눌러도 아무 파일도 생기지 않는 경우, 다른 하나는 파일은 생기지만 재생하면 무음이거나 아주 작은 잡음뿐인 경우입니다. 두 경우 모두 앱이 "통화 중 오디오"에 접근하지 못했다는 같은 원인을 가리킵니다.
왜 이렇게 됐나 — Android 10의 마이크 차단
Android 10부터 구글은 서드파티 앱이 마이크를 통해 통화 오디오를 캡처하는 것을 원천적으로
차단했습니다. 통화 중에는 일반 앱의 오디오 녹음 API(MediaRecorder 등)가 상대방
음성까지 담긴 통화 채널에 접근하지 못하도록 시스템 단에서 막아 놓은 것입니다. 이전 버전에서는
이런저런 방법으로 마이크 스트림을 붙잡아 녹음이 가능했지만, 이 변경 이후로는 일반적인 방법으로는
불가능해졌습니다.
그 전에는 어떻게 우회했나 — 접근성 서비스
마이크 직접 캡처가 막히자, 일부 개발자들은 접근성 서비스(AccessibilityService)를 우회로로 썼습니다. 접근성 서비스는 원래 시각·운동 장애가 있는 사용자를 위해 화면 내용을 읽어주거나 대신 조작해 주는 용도로 만들어진 강력한 시스템 권한입니다. 이 권한의 범위가 넓다 보니, 일부 앱들이 이를 이용해 통화 오디오에 접근하는 우회 경로를 찾아냈습니다.
2022년 Google Play 정책 변경 — 접근성 API 우회도 금지
그러나 2022년, Google Play는 접근성 서비스 정책을 강화해 이 우회로마저 닫았습니다. 정책 원문은 접근성 API를 이용해 앱이 "autonomously initiate, plan, and execute actions"(자율적으로 동작을 시작·계획·실행)하는 것을 엄격히 금지한다고 명시합니다. 통화 녹음처럼 접근성 서비스 본래 목적과 무관하게 백그라운드에서 자동으로 오디오를 캡처하는 동작이 정확히 이 조항에 걸립니다. 결과적으로 이 정책 이후 출시·업데이트된 앱들은 접근성 서비스를 통한 통화 녹음 기능을 넣을 수 없게 되었고, 기존에 이 방식을 쓰던 앱들도 심사에서 걸러지거나 기능을 스스로 빼야 했습니다.
결과적으로 지금 녹음이 되는 건 어디인가
마이크 직접 접근도, 접근성 서비스 우회도 막힌 지금, 통화를 실제로 녹음할 수 있는 주체는 제조사가 자체적으로 만든 기본 통화(전화) 앱뿐입니다. 삼성 통화 앱, 샤오미 통화 앱처럼 제조사가 운영체제 안쪽 권한으로 직접 만든 기본 다이얼러는 시스템 수준에서 통화 오디오 스트림에 접근할 수 있는 특별한 위치에 있어서, 이 제약을 받지 않습니다. 반대로 Play 스토어에서 내려받는 서드파티 앱은 아무리 권한을 많이 요청해도 이 위치에 설 수 없습니다.
실측: 기본 전화 앱을 바꾸면 무슨 일이 생기나
이 글의 결론을 뒷받침하기 위해 삼성 기기에서 직접 A/B 테스트를 했습니다. 같은 통화를 두 가지 조건에서 걸어 보고, 삼성 통화 앱이 남기는 녹음 파일의 크기를 비교했습니다.
| 조건 | 삼성 통화 녹음 파일 | 결과 |
|---|---|---|
| 서드파티 앱이 기본 전화 앱(ROLE_DIALER) 역할을 가져간 상태 | 0바이트 | 녹음 실패 |
| 기본 전화 앱 역할을 삼성 통화 앱에 그대로 둔 상태 | 190,947바이트 | 정상 녹음 |
즉 원인은 녹음 기능 자체의 결함이 아니라, 어떤 앱이 기본 전화 앱(다이얼러) 역할을 쥐고 있느냐였습니다. 서드파티 앱이 기본 전화 앱 역할을 넘겨받는 순간, 제조사 통화 앱은 통화 제어권을 잃고 녹음 기능도 함께 무력화됩니다. 반대로 그 역할을 건드리지 않으면 제조사 통화 앱이 평소처럼 통화를 온전히 처리하고, 녹음도 정상적으로 남습니다.
그럼 서드파티 앱은 통화 녹음과 관련해 뭘 할 수 있나
서드파티 앱이 통화를 직접 녹음할 수는 없지만, 제조사 통화 앱이 이미 만들어 놓은 녹음 파일을 찾아서 정리하고 재생하는 것까지는 가능합니다. 삼성을 비롯한 여러 제조사는 통화 녹음 파일을 기기 저장소의 정해진 폴더에 남기는데, 저장소 접근 권한이 있는 앱이라면 이 파일 목록을 읽어 와서 통화 상대·시각별로 정리해 보여주거나 앱 안에서 바로 재생하는 기능 정도는 구현할 수 있습니다. 다만 이는 어디까지나 "이미 만들어진 파일을 다루는 것"이지, 녹음 자체를 대신하는 것은 아닙니다.
참고로 TwoPhone도 이런 이유로 기본 전화 앱(다이얼러) 역할을 요구하지 않는 방식을 택하고 있습니다 — 이 역할을 가져가면 제조사 통화 녹음이 먼저 깨진다는 사실을 실기기로 확인했기 때문입니다.
요약
- Android 10부터 서드파티 앱의 마이크 기반 통화 녹음은 시스템이 차단합니다.
- 2022년 이후로는 접근성 서비스를 이용한 우회 녹음도 Google Play 정책으로 금지되었습니다.
- 지금 통화를 녹음할 수 있는 것은 사실상 제조사 기본 통화 앱뿐입니다.
- 서드파티 앱이 기본 전화 앱 역할을 가져가면, 실측상 제조사 녹음 기능이 0바이트로 무력화됩니다.
- 녹음을 계속 쓰려면 기본 전화 앱 역할을 함부로 바꾸지 않는 것이 실용적인 대응입니다.