>_ DevTrendsen

Language

Home

Languages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Security
Kotlin

ShizuCallRecorder Brings Back Call Recording to Stock Android Without Root

Remember when recording a phone call on Android was as simple as downloading the first app you found in Google Play? Google has been systematically closing this loophole with each new OS version. First, they restricted microphone access during calls, then blocked the Accessibility API for third-party recorders. As a result, modern device owners are left with two options: buy smartphones with built-in manufacturer recording features or gain root access.

A new project called ShizuCallRecorder recently appeared on GitHub. Its author found a third way. This open-source utility can record both sides of a conversation on Android 12 and newer without any system modifications.

How Audio Capture Works Without Rooting

The project's idea is refreshingly simple. Instead of trying to outsmart system security mechanisms through special features, the developer leveraged the Shizuku infrastructure.

For those unfamiliar with Shizuku: it's a tool for forwarding ADB permissions to the level of regular applications. Running as shell (com.android.shell) in Android provides privileges that ordinary software doesn't have access to. The ShizuCallRecorder author bundled the binary scrcpy-server from the well-known scrcpy utility inside the app.

When an incoming or outgoing call occurs, ShizuCallRecorder launches an isolated thread scrcpy-server through Shizuku. The server intercepts the audio stream directly from the system and feeds it back to the application. This makes it possible to cleanly record both your voice and the caller's, even during conversations over a Bluetooth headset.

The workflow looks like this:

  1. The app receives a phone state change event from TelephonyManager.
  2. Requests Shizuku to launch the internal service.
  3. A local instance of scrcpy-server starts with audio capture flags.
  4. The stream is encoded to Opus or AAC and saved to device memory.
  5. When the call ends, the process stops.

The app has no persistent background service hogging memory and draining the battery. It wakes up only when triggered by a system event.

Settings and Features

The utility's functionality is deliberately minimalistic. The author explicitly warns in the documentation that they don't plan to turn the project into a catch-all recorder for messengers like Telegram or WhatsApp. The main focus is on regular cellular operator calls.

Among the useful options you'll find:

  • Audio codec selection between Opus and AAC.
  • Automatic recording with exclusion rules. You can ignore anonymous numbers, specific contacts from your phone book, or only record calls from unknown numbers.
  • Automatic Shizuku shutdown after a call.

The last point is for security. Some banking apps and corporate service clients react negatively to enabled ADB or an active Shizuku service. To avoid triggering other software's security mechanisms, ShizuCallRecorder can stop its session on its own.

Caveats and Limitations

Before installing, consider the technical implementation details.

First, the utility relies on Android's private APIs and scrcpy-server logic. On stock Android (Pixel, Motorola, or AOSP ROMs), everything works normally. However, smartphone manufacturers like to rewrite system call handling services. Issues may occur on firmware like MIUI, HyperOS, or One UI.

Second, there's a nuance with parallel calls. If a second call comes in during an ongoing conversation and you switch to it, recording continues into the same file without separation.

Third, privacy rules in recent Android versions make instant access to the incoming caller's number difficult. Because of this, the caller ID sometimes triggers with a delay, and the automatic filter may incorrectly treat a call as anonymous.

OS version compatibility looks like this:

  • Android 11 is supported with a caveat: the device screen must be unlocked for audio capture to work.
  • Android 12, 13, 14, and 15 work fully.
  • Android 16 and 17 are still questionable due to announced changes in the ADB subsystem.

How to Try the Project

The setup process is slightly more involved than a typical app store install, but it's straightforward:

  1. Install and launch Shizuku on your smartphone (the repository author recommends using the fork by thedjchi).
  2. Download the latest APK file from the ShizuCallRecorder releases page on GitHub.
  3. Grant the app basic permissions for call and contact access.
  4. Approve the request for Shizuku access.

ShizuCallRecorder is a great example of how combining existing infrastructure (scrcpy and Shizuku) can solve a problem that hit a wall of system restrictions in Android. The project is written in Kotlin, distributed under the GPL-3.0 license, and neatly performs exactly the task it was created for.

If you need standalone phone call recording without rooting your device, this project definitely deserves a place in your working utility collection.

Related projects