VoIP Call Recorder
VoIP Call Recorder Icon

VoIP Call Recorder & Companion Engine

WhatsApp & WhatsApp Business Automated Call Capture Suite

An original two-component architecture designed to solve automated WhatsApp VoIP recording on modern Android (10 through 15). Built without root, with zero advertisements, and fully local on-device storage.

DUAL-APP ARCHITECTURE WHATSAPP & WA BUSINESS SDK 36 (Android 15 Ready) Firebase Crashlytics Enabled No Root Required 100% Free & Private

⬇ Direct Download Packages

Both apps work as a coordinated team: install both APKs on your device to enable automatic WhatsApp VoIP detection, background audio capture, and recordings management.

SquareCircle Main App · v1.0.4 (Build 5)

The primary user interface (redesigned matching competitor standard). Manages the recordings library, in-line player, call metadata, date grouping, search, favorites, test recording generator, and Firebase Crashlytics.

Package:com.puliyal.voiprecorder
Release File:7.0 MB (Signed Release)
Compatibility:Android 8.0 - 15 (API 26-36)
Version:v1.0.4 (Build 5)
⬇ Download SquareCircle APK (v1.0.4)

SquareCircle Helper Companion Engine · v1.0.4 (Build 5)

The background worker engine. Prioritizes raw MIC source, runs wide-range Automatic Gain Control (+37.5 dB / up to 75x boost for faint receiver voice), passive recording without stealing WhatsApp session, and instant synchronization.

Package:com.puliyal.voiprecorder.helper
Release File:6.7 MB (Signed Release)
Compatibility:Android 8.0 - 15 (API 26-36)
Version:v1.0.4 (Build 5)
⬇ Download SquareCircle Helper APK (v1.0.4)
Testing Tip (Avoiding Mic Conflicts): Android allows only one app to access the recording stream at any given moment. If you currently have Cube ACR or Cube ACR Helper running simultaneously, pause or turn off Cube ACR Helper's Accessibility service in Settings > Accessibility during your test so the hardware microphone lock is released for SquareCircle.
Need developer debug builds? Main App Debug APK (8.5 MB) Helper Debug APK (8.1 MB)

1 Why Two Apps? (The Modern Android Reality)

Developers attempting to build WhatsApp call recorders on Android 10+ encounter two major roadblocks:

The Solution: Clean Separation of Concerns

By splitting the solution into two dedicated apps (the same architectural pattern pioneered by Cube ACR and ACR Phone):

ComponentGoogle Play / OS RolePermissions Required
Main App (VoipCallRecorder) Fully Google Play compliant. Does not request Accessibility. Acts as the user hub, playback manager, and floating overlay provider. POST_NOTIFICATIONS, SYSTEM_ALERT_WINDOW
Companion Helper (VoipHelper) Directly sideloaded companion engine. Hooks WhatsApp calling window events and manages low-level hardware mic and speaker routing. RECORD_AUDIO, BIND_ACCESSIBILITY_SERVICE, FOREGROUND_SERVICE_MICROPHONE
Result: The user gets seamless, automated WhatsApp call capture without rooting their phone, while adhering to Android's architectural boundaries.

2 End-to-End Execution Sequence

Here is what happens under the hood when a WhatsApp VoIP call begins and ends:

1
Call Screen Detection via Accessibility WhatsAppAccessibilityService monitors window transitions. When it detects VoipActivity or VoipActivityV2 from com.whatsapp or com.whatsapp.w4b, it traverses the view tree to automatically extract the contact name.
2
Foreground Audio Capture & Hardware Routing HelperRecordingService starts as a microphone foreground service. AudioCaptureEngine invokes modern AudioManager.setCommunicationDevice(TYPE_BUILTIN_SPEAKER) (or fallback) to maximize acoustic voice bleed from the remote party.
3
Real-Time PCM Gain Boost & AAC Hardware Encoding PCM audio frames are sampled at 44.1 kHz 16-bit. AudioGainProcessor applies a 2.0x digital gain multiplier to amplify remote voice levels before streaming into Android's native MediaCodec hardware AAC encoder (outputting .m4a).
4
IPC Notification & Floating In-Call Widget The Helper broadcasts ACTION_RECORDING_STARTED to the Main App. The Main App's HelperConnector launches FloatingOverlayService, presenting a glowing in-call widget over WhatsApp to show active recording status.
5
Call Dismissal, FileProvider Handoff & Room Ingestion When the call ends, the Helper stops recording and wraps the .m4a file into a secure FileProvider content URI. It dispatches ACTION_RECORDING_FINISHED. The Main App ingests the file into private storage, records the duration and contact into the Room SQLite database, and refreshes the UI.

3 Complete Permissions Matrix (Both Apps)

To deliver automated background recording without root, the dual-app suite delegates specific capabilities between the Companion Helper and Main App. Here is everything required and where to enable each:

VoIP Companion Engine (Helper) com.puliyal.voiprecorder.helper

The background service responsible for detecting VoIP screens, routing audio hardware, and capturing the conversation.

Permission / SettingType / ScopeWhy It Is NeededHow & Where to Enable
0. Restricted Settings Unlock
Crucial for Android 13, 14 & 15
System Security Android blocks Accessibility for sideloaded APKs by default with a greyed-out toggle. Phone Settings → Apps → VoIP Recorder Helper → tap ⋮ (top-right menu) → "Allow restricted settings" (confirm with PIN/fingerprint).
1. Accessibility Service
BIND_ACCESSIBILITY_SERVICE
Required Hooks VoipActivityV2 window transitions from com.whatsapp / com.whatsapp.w4b and reads caller name. Phone Settings → Accessibility → Downloaded apps → VoIP Recorder Helper Service → Turn ON.
2. Microphone Capture
RECORD_AUDIO
Required Accesses hardware microphone stream to capture live call audio. In Helper app: tap "Grant Audio Permission" → "While using the app" (or in App Info → Permissions → Microphone → Allow).
3. Post Notifications
POST_NOTIFICATIONS
Required (Android 13+) Runs ongoing foreground service notification so Android doesn't kill the recording process mid-call. Prompted automatically during audio setup, or in App Info → Notifications → Allow.
4. Battery Optimization
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Recommended Prevents OEM task killers (Samsung OneUI, Xiaomi MIUI, etc.) from sleeping the background service. Phone Settings → Apps → VoIP Recorder Helper → Battery → set to "Unrestricted".
5. Modify Audio Settings
MODIFY_AUDIO_SETTINGS
Auto-Granted Switches communication device routing to speakerphone to acoustically capture the remote party. Granted automatically by Android upon install.
6. Microphone Foreground Service
FOREGROUND_SERVICE_MICROPHONE
Auto-Granted Authorizes foreground microphone access when the screen turns off during a call. Declared in Manifest; granted automatically by system.
7. Internet & Network State
INTERNET · ACCESS_NETWORK_STATE
Auto-Granted Enables real-time crash and ANR telemetry dispatch to Firebase Crashlytics & Analytics. Declared in Manifest; granted automatically by Android.

VoIP Call Recorder (Main App) com.puliyal.voiprecorder

The Google Play compliant user library, audio playback manager, and floating overlay provider.

Permission / SettingType / ScopeWhy It Is NeededHow & Where to Enable
1. Display Over Other Apps
SYSTEM_ALERT_WINDOW
Required Renders the floating "● REC · VoIP Engine Active" glowing badge over the WhatsApp in-call screen. In Main App: tap "Enable Floating In-Call Widget" (or phone Settings → Apps → Special app access → Display over other apps → VoIP Call Recorder → Allow).
2. Post Notifications
POST_NOTIFICATIONS
Recommended Notifies you when call ingestion completes and a new recording is saved to your library. Prompted on first launch, or in App Info → Notifications → Allow.
3. Storage Access
filesDir (Scoped Storage)
No Permission Needed Recordings are stored inside the app's sandboxed private directory. Broad storage permissions (e.g. MANAGE_EXTERNAL_STORAGE) are completely avoided. Handled locally by Android scoped storage with zero risk to personal photos or files.
4. Package Visibility Queries
<queries>
Auto-Granted Enables the Main App to verify if the Companion Helper, WhatsApp, and WhatsApp Business are installed. Declared in Manifest; granted automatically by Android.
5. Internet & Network State
INTERNET · ACCESS_NETWORK_STATE
Auto-Granted Enables real-time crash and ANR telemetry dispatch to Firebase Crashlytics & Analytics. Declared in Manifest; granted automatically by Android.
Quick Permission Setup Summary:
• On Companion Helper: Unlock Restricted Settings → Enable Accessibility Service → Allow Microphone.
• On Main App: Allow Display Over Other Apps (Floating Widget).

4 Step-by-Step Installation & Setup Guide

  1. Download & Install Main App:

    Tap VoipCallRecorder-1.0.0.apk above to install the main application. Grant the requested notification and floating widget permissions.

  2. Download & Install Companion Helper:

    Tap VoipCallRecorder-Helper-1.0.0.apk to install the companion service. Open it once to initialize.

  3. Crucial for Android 13, 14 & 15: Unlock Restricted Settings

    Android 13+ restricts accessibility services for sideloaded APKs by default. Follow this 15-second unlock:

    How to unlock Restricted Settings:
    1. Open your phone's Settings → Apps → All Apps.
    2. Select VoIP Recorder Helper.
    3. Tap the ⋮ (three dots) in the top right corner.
    4. Tap “Allow restricted settings” and confirm with your fingerprint / PIN.
    (If three dots don't appear, try enabling Accessibility first; Android will pop up the restriction, which activates this menu entry.)
  4. Enable Accessibility Service:

    Go to Settings → Accessibility → VoIP Recorder Helper Service and toggle it ON.

  5. Make or Receive a WhatsApp Call:

    Test with a standard WhatsApp audio call. The floating status indicator appears, and upon call completion, your recording appears instantly in the Main App library!

5 UI Architecture & In-Call Experience

VoIP Call RecorderAll recordings · synced via IPC
✓ Companion Helper Connected Listening for incoming/outgoing WhatsApp calls
▶
Khalid Al-MansoorWhatsApp · Today, 15:32 · 08:45 · 8.2 MB
⤴ 🗑
▶
Project Architecture SyncWA Business · Yesterday · 19:12 · 18.0 MB
⤴ 🗑
▶
Sarah JenkinsWhatsApp · 19 Oct 2026 · 03:22 · 3.1 MB
⤴ 🗑
3 Calls
Stored on device
📁
WhatsApp CallActive VoIP session (sample)
👤
Khalid Al-Mansoor
04:18 · WhatsApp Calling
● REC · VoIP Engine Active
Floating widget hooks via SYSTEM_ALERT_WINDOW
VoIP Recorder HelperCompanion Engine Status
✓ Engine Ready & Listening

Accessibility hook active for com.whatsapp & com.whatsapp.w4b.

Hardware Speakerphone Routing

Auto-speakerphone enabled to capture remote voice bleed.

Audio Gain Multiplier: 2.0x

Real-time PCM amplification enabled.

Helper runs in background

6 Architecture Comparison: VoIP Suite vs. VoiceVault

CapabilityVoIP Call Recorder Suite (Here)VoiceVault (Single App)
Primary TargetAutomated WhatsApp & WhatsApp Business callsIn-person meetings, lectures, voice memos
App StructureDual-App: Main UI + Sideloaded Companion EngineSingle, standalone Play-compliant APK/AAB
Trigger MechanismAutomatic (hooks WhatsApp VoipActivity window)One-touch (Widget, QS Tile, App Shortcut, Power key)
Accessibility ServiceUsed in Companion Helper onlyNone (0% risk of Play accessibility flags)
Speakerphone AssistAuto-activates hardware speaker routing + 2.0x gainManual speakerphone recommendation
Audio EncodingReal-time AAC / M4A (44.1 kHz, 16-bit PCM)Direct MediaRecorder AAC / M4A (128 kbps)

7 Technical Specifications & Build Dossier

Main App Toolchain

  • Namespace / Package: com.puliyal.voiprecorder
  • Android SDK: CompileSdk 36 · TargetSdk 35 · MinSdk 26
  • Kotlin: 2.0.21 / AGP 8.5.2
  • Telemetry: Firebase BoM 33.5.1 + Crashlytics + Analytics
  • Database: AndroidX Room 2.6.1 + KSP
  • UI Framework: ViewBinding + Material Design 3
  • Size: 7.0 MB (Release Signed) · 8.5 MB (Debug)

Companion Helper Toolchain

  • Namespace / Package: com.puliyal.voiprecorder.helper
  • Android SDK: CompileSdk 36 · TargetSdk 35 · MinSdk 26
  • Kotlin: 2.0.21 / AGP 8.5.2
  • Telemetry: Firebase BoM 33.5.1 + Crashlytics + Analytics
  • Audio Subsystem: AudioRecord + MediaCodec AAC Encoder
  • IPC Layer: AndroidX FileProvider + Explicit Broadcast Intents
  • Size: 6.7 MB (Release Signed) · 8.1 MB (Debug)

Headless CLI Build Commands

# Built on headless Ubuntu Linux server (OpenJDK 17 + Android CLI SDK)
export ANDROID_HOME=/home/waheed/android-sdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64

# Helper APK
cd /home/waheed/WhatsappRecorder/VoipCallRecorder/VoipCallRecorder-Helper
./gradlew assembleRelease

# Main App APK
cd /home/waheed/WhatsappRecorder/VoipCallRecorder/VoipCallRecorder-Main
./gradlew assembleRelease