ShizuCallRecorder возвращает запись звонков на чистый Android без Root
Помните времена, когда для записи телефонного разговора на Android достаточно было скачать первое попавшееся приложение из Google Play? Google планомерно закрывал эту возможность с выходом каждой новой версии ОС. Сначала ограничили доступ к микрофону во время вызова, потом заблокировали Accessibility API для сторонних рекордеров. В результате владельцам современных устройств оставили два пути: покупать смартфоны с встроенной функцией записи от производителя или получать root-права.
Недавно на GitHub появился проект ShizuCallRecorder. Его автор нашел третий путь. Это утилита с открытым исходным кодом, способная писать обе стороны разговора на Android 12 и новее без модификации системы.
Как устроен захват аудио без рутирования
Идея проекта подкупает лаконичностью. Вместо попыток обхитрить защитные механизмы системы через специальные возможности, разработчик воспользовался инфраструктурой Shizuku.
Для тех, кто не сталкивался с Shizuku: это инструмент для проброса прав ADB на уровень обычных приложений. От имени шелла (com.android.shell) в Android доступны привилегии, к которым у рядового софта доступа нет. Автор ShizuCallRecorder упаковал внутрь приложения бинарник scrcpy-server от известной утилиты scrcpy.
Когда поступает или совершается звонок, ShizuCallRecorder через Shizuku запускает изолированный поток scrcpy-server. Сервер перехватывает аудиопоток прямо из системы и отдает его обратно в приложение. Благодаря этому получается чисто записать и ваш голос, и голос собеседника, причем даже при разговоре через Bluetooth-гарнитуру.
Пайплайн работы выглядит так:
- Приложение получает событие изменения состояния телефона от
TelephonyManager. - Запрашивает через Shizuku запуск внутреннего сервиса.
- Поднимается локальный экземпляр
scrcpy-serverс флагами захвата аудио. - Поток кодируется в Opus или AAC и сохраняется в память устройства.
- По завершении разговора процесс останавливается.
В приложении нет постоянного фонового сервиса, висящего в памяти и съедающего батарею. Оно просыпается только по триггеру системного события.
Настройки и возможности
Функциональность утилиты намеренно сделана минималистичной. Автор сразу предупреждает в документации, что не планирует превращать проект в комбайн для записи мессенджеров вроде Telegram или WhatsApp. Основной упор сделан на обычные звонки сотовых операторов.
Из полезных опций внутри найдете:
- Выбор аудиокодека между Opus и AAC.
- Автоматическая запись с правилами исключения. Можно игнорировать анонимные номера, конкретные контакты из телефонной книги или писать только вызовы с незнакомых номеров.
- Автоматическое отключение Shizuku после разговора.
Последний пункт сделан ради безопасности. Некоторые банковские приложения и клиенты корпоративных сервисов негативно реагируют на включенный ADB или активную службу Shizuku. Чтобы не провоцировать защитные механизмы другого софта, ShizuCallRecorder умеет останавливать сессию за собой.
Подводные камни и ограничения
Перед установкой стоит учесть технические особенности реализации.
Во-первых, утилита завязана на приватные API Android и логику scrcpy-server. На чистом Android (Pixel, Motorola или прошивки AOSP) всё работает штатно. Однако производители смартфонов любят переписывать системные сервисы обработки вызовов. На прошивках вроде MIUI, HyperOS или One UI могут возникать сбои.
Во-вторых, есть нюанс с параллельными звонками. Если во время текущего разговора поступит второй вызов и вы переключитесь на него, запись продолжится в один и тот же файл без разделения.
В-третьих, правила приватности в свежих версиях Android затрудняют мгновенный доступ к номеру входящего абонента. Из-за этого определитель номера иногда срабатывает с задержкой, и автоматический фильтр может ошибочно принять звонок за анонимный.
Совместимость с версиями ОС выглядит следующим образом:
- Android 11 поддерживается с оговоркой: для захвата звука экран устройства обязательно должен быть разблокирован.
- Android 12, 13, 14 и 15 работают полностью.
- Android 16 и 17 пока под вопросом из-за анонсированных изменений в подсистеме ADB.
Как опробовать проект
Процесс настройки чуть сложнее обычной установки из магазина приложений, но вполне понятен:
- Установите и запустите Shizuku на смартфоне (автор репозитория рекомендует использовать форк от thedjchi).
- Скачайте свежий APK-файл со страницы релизов ShizuCallRecorder на GitHub.
- Выдайте приложению базовые разрешения на работу со звонками и контактами.
- Подтвердите запрос на доступ к Shizuku.
ShizuCallRecorder — отличный пример того, как комбинация существующей инфраструктуры (scrcpy и Shizuku) решает проблему, упершуюся в системные ограничения Android. Проект написан на Kotlin, распространяется под лицензией GPL-3.0 и аккуратно выполняет ровно ту задачу, для которой создан.
Если вам нужна автономная запись телефонных разговоров без рутирования устройства, проект определенно заслуживает места в рабочей подборке утилит.
