>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Kotlin

ShizuCallRecorder recupera la grabación de llamadas en Android stock sin root

¿Recuerdas cuando grabar una llamada en Android era tan simple como descargar la primera aplicación que encontrabas en Google Play? Google ha estado cerrando sistemáticamente este vacío con cada nueva versión del sistema operativo. Primero restringieron el acceso al micrófono durante las llamadas, luego bloquearon la API de Accesibilidad para grabadoras de terceros. Como resultado, los propietarios de dispositivos modernos se quedan con dos opciones: comprar smartphones con funciones de grabación integradas del fabricante o obtener acceso root.

Un nuevo proyecto llamado ShizuCallRecorder apareció recientemente en GitHub. Su autor encontró una tercera vía. Esta utilidad de código abierto puede grabar ambos lados de una conversación en Android 12 y versiones posteriores sin modificaciones del sistema.

Cómo funciona la captura de audio sin rooting

La idea del proyecto es bastante simple. En lugar de intentar evadir los mecanismos de seguridad del sistema mediante funciones especiales, el desarrollador aprovecha la infraestructura de Shizuku.

Para quienes no conocen Shizuku: es una herramienta para reenviar permisos ADB al nivel de aplicaciones regulares. Ejecutarse como shell (com.android.shell) en Android proporciona privilegios a los que el software ordinario no tiene acceso. El autor de ShizuCallRecorder incluyó el binario scrcpy-server de la conocida utilidad scrcpy dentro de la aplicación.

Cuando ocurre una llamada entrante o saliente, ShizuCallRecorder inicia un subproceso aislado scrcpy-server a través de Shizuku. El servidor intercepta el flujo de audio directamente del sistema y lo devuelve a la aplicación. Esto permite grabar claramente tanto tu voz como la del interlocutor, incluso durante conversaciones a través de un auricular Bluetooth.

El flujo de trabajo es el siguiente:

  1. La aplicación recibe un evento de cambio de estado del teléfono desde TelephonyManager.
  2. Solicita a Shizuku que inicie el servicio interno.
  3. Se inicia una instancia local de scrcpy-server con indicadores de captura de audio.
  4. El flujo se codifica a Opus o AAC y se guarda en la memoria del dispositivo.
  5. Cuando termina la llamada, el proceso se detiene.

La aplicación no tiene un servicio en segundo plano persistente que consuma memoria y batería. Solo se activa cuando es desencadenada por un evento del sistema.

Configuración y funciones

La funcionalidad de la utilidad es deliberadamente minimalista. El autor advierte explícitamente en la documentación que no tiene planes de convertir el proyecto en una grabadora universal para mensajeros como Telegram o WhatsApp. El enfoque principal está en las llamadas telefónicas regulares de operadores celulares.

Entre las opciones útiles encontrarás:

  • Selección de códec de audio entre Opus y AAC.
  • Grabación automática con reglas de exclusión. Puedes ignorar números anónimos, contactos específicos de tu lista telefónica o grabar solo llamadas de números desconocidos.
  • Apagado automático de Shizuku después de una llamada.

El último punto es por seguridad. Algunas aplicaciones bancarias y clientes de servicios corporativos reaccionan negativamente ante un ADB habilitado o un servicio Shizuku activo. Para evitar activar los mecanismos de seguridad de otro software, ShizuCallRecorder puede finalizar su sesión por sí mismo.

Advertencias y limitaciones

Antes de instalar, considera los detalles de implementación técnica.

Primero, la utilidad depende de las APIs privadas de Android y la lógica scrcpy-server. En Android stock (Pixel, Motorola o ROMs AOSP), todo funciona normalmente. Sin embargo, los fabricantes de smartphones les gusta reescribir los servicios de manejo de llamadas del sistema. Pueden ocurrir problemas en firmware como MIUI, HyperOS o One UI.

Segundo, hay un matiz con las llamadas paralelas. Si una segunda llamada entra durante una conversación en curso y cambias a ella, la grabación continúa en el mismo archivo sin separación.

Tercero, las reglas de privacidad en versiones recientes de Android dificultan el acceso instantáneo al número del llamante entrante. Por esto, la identificación de llamadas a veces se activa con retraso, y el filtro automático puede tratar incorrectamente una llamada como anónima.

La compatibilidad con versiones del sistema operativo es la siguiente:

  • Android 11 es compatible con una advertencia: la pantalla del dispositivo debe estar desbloqueada para que funcione la captura de audio.
  • Android 12, 13, 14 y 15 funcionan completamente.
  • Android 16 y 17 aún son cuestionables debido a los cambios anunciados en el subsistema ADB.

Cómo probar el proyecto

El proceso de configuración es ligeramente más complejo que una instalación típica de tienda de aplicaciones, pero es directo:

  1. Instala y ejecuta Shizuku en tu smartphone (el autor del repositorio recomienda usar el fork de thedjchi).
  2. Descarga el último archivo APK desde la página de lanzamientos de ShizuCallRecorder en GitHub.
  3. Otorga a la aplicación los permisos básicos para acceso a llamadas y contactos.
  4. Aprueba la solicitud de acceso a Shizuku.

ShizuCallRecorder es un gran ejemplo de cómo combinar infraestructura existente (scrcpy y Shizuku) puede resolver un problema que se topó con una pared de restricciones del sistema en Android. El proyecto está escrito en Kotlin, distribuido bajo la licencia GPL-3.0, y realiza limpiamente exactamente la tarea para la que fue creado.

Si necesitas grabación independiente de llamadas telefónicas sin rootear tu dispositivo, este proyecto definitivamente merece un lugar en tu colección de utilidades de trabajo.

Proyectos relacionados