chenxiaolong / BCR

A Basic Call Recorder for rooted Android devices
GNU General Public License v3.0
1.5k stars 98 forks source link

Call are not being recorded #462

Open Vidhan31 opened 7 months ago

Vidhan31 commented 7 months ago

I am running evolution x custom rom on my redmi note 5 pro (whyred). I have not been able to run bcr every since android 12 came out. Call recording used to run fine till android 11. I am not sure if it is rom problem or android or maybe requirements of application changed. It didn't work on another rom either (pixel experience). The recording always have duration of 1 second and file size of 1.37kb and even that doesn't sound right. The only other magisk modules running are busybox, universal safety fix for attestation and debloater for system apps. No xposed or anything is used. I have attached the metadata and logs.

metadata: { "timestamp_unix_ms": 1700741701819, "timestamp": "2023-11-23T17:45:01.819+05:30", "direction": "out", "sim_slot": 1, "call_log_name": "", "calls": [ { "phone_number": "198", "phone_number_formatted": "198", "caller_name": null, "contact_name": null } ], "output": { "format": { "type": "OGG\/Opus", "mime_type_container": "audio\/ogg", "mime_type_audio": "audio\/opus", "parameter_type": "bitrate", "parameter": 48000 }, "recording": { "frames_total": 26112, "frames_encoded": 26112, "sample_rate": 48000, "channel_count": 1, "duration_secs_total": 0.544, "duration_secs_encoded": 0.544, "buffer_frames": 3840, "buffer_overruns": 0, "was_ever_paused": false, "was_ever_holding": false } } }

logs: 20231123_172727.644+0530_out_198.log.txt

chenxiaolong commented 7 months ago

Thanks for the logs!

It looks like the call length (between ACTIVE and DISCONNECTED states) was around ~9.5 seconds:

11-23 17:27:29.718  8071  8071 D RecorderInCallService: handleStateChange: Call [id: TC@3, state: ACTIVE, details: [id: TC@3, state: ACTIVE, pa: ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 1, UserHandle{0}, hdl: tel:***, hdlPres: 1, videoState: Audio Only, caps: [Capabilities: CAPABILITY_HOLD CAPABILITY_SUPPORT_HOLD CAPABILITY_MUTE CAPABILITY_SUPPORTS_VT_REMOTE_RX CAPABILITY_SUPPORTS_VT_REMOTE_TX CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL], props: [Properties:]]], null, 4
...
11-23 17:27:38.170  8071  8071 D RecorderInCallService: handleStateChange: Call [id: TC@3, state: DISCONNECTING, details: [id: TC@3, state: DISCONNECTING, pa: ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 1, UserHandle{0}, hdl: tel:***, hdlPres: 1, videoState: Audio Only, caps: [Capabilities: CAPABILITY_HOLD CAPABILITY_SUPPORT_HOLD CAPABILITY_MUTE CAPABILITY_SUPPORTS_VT_REMOTE_RX CAPABILITY_SUPPORTS_VT_REMOTE_TX CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL], props: [Properties:]]], 10, 10

but the audio driver only provided 0.8 seconds of audio to BCR:

11-23 17:27:38.189  8071 12005 D RecorderThread/55: Input complete: Total: 39168 frames (0.8s), Encoded: 39168 frames (0.8s), Sample rate: 48000, Channel count: 1, Buffer frames: 3840, Buffer overruns: 0, Was ever paused: false, Was ever holding: false

Unfortunately, there's not much I can do about this because from BCR's perspective, everything is behaving correctly. It's just that the audio driver is not producing audio. There's probably nothing you can do about this besides trying more ROMs (or potentially other kernels).

Vidhan31 commented 7 months ago

Thanks for the logs!

It looks like the call length (between ACTIVE and DISCONNECTED states) was around ~9.5 seconds:

11-23 17:27:29.718  8071  8071 D RecorderInCallService: handleStateChange: Call [id: TC@3, state: ACTIVE, details: [id: TC@3, state: ACTIVE, pa: ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 1, UserHandle{0}, hdl: tel:***, hdlPres: 1, videoState: Audio Only, caps: [Capabilities: CAPABILITY_HOLD CAPABILITY_SUPPORT_HOLD CAPABILITY_MUTE CAPABILITY_SUPPORTS_VT_REMOTE_RX CAPABILITY_SUPPORTS_VT_REMOTE_TX CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL], props: [Properties:]]], null, 4
...
11-23 17:27:38.170  8071  8071 D RecorderInCallService: handleStateChange: Call [id: TC@3, state: DISCONNECTING, details: [id: TC@3, state: DISCONNECTING, pa: ComponentInfo{com.android.phone/com.android.services.telephony.TelephonyConnectionService}, 1, UserHandle{0}, hdl: tel:***, hdlPres: 1, videoState: Audio Only, caps: [Capabilities: CAPABILITY_HOLD CAPABILITY_SUPPORT_HOLD CAPABILITY_MUTE CAPABILITY_SUPPORTS_VT_REMOTE_RX CAPABILITY_SUPPORTS_VT_REMOTE_TX CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL], props: [Properties:]]], 10, 10

but the audio driver only provided 0.8 seconds of audio to BCR:

11-23 17:27:38.189  8071 12005 D RecorderThread/55: Input complete: Total: 39168 frames (0.8s), Encoded: 39168 frames (0.8s), Sample rate: 48000, Channel count: 1, Buffer frames: 3840, Buffer overruns: 0, Was ever paused: false, Was ever holding: false

Unfortunately, there's not much I can do about this because from BCR's perspective, everything is behaving correctly. It's just that the audio driver is not producing audio. There's probably nothing you can do about this besides trying more ROMs (or potentially other kernels).

I will try changing kernerls (if there are still compatible ones available) instead of ROM and try testing if BCR works. Thanks!

BigBrar commented 4 months ago

Hey @Vidhan31 I think I found a solution, it was the same problem for me. Whenever I tried to record a call using bcr call recorder it just will record for 1-3 seconds and the recording will be soundless. A simple solution to this problem is to remove Google Assistant app, or even better just disable to uninstall the Google app. The google assistant interferes with the bcr call recorder and audio drivers and messes up the recordings.

Just disable "Ok Google" and bcr will be working again...

rvkant-arya commented 3 months ago

Thanks, it works

lockHrt commented 2 months ago

Disabling Google app works as stated by @BigBrar.

I have accidentally found another trick with the Google app still being enabled. I put the phone into the safe mode (for a different reason). When I took it out of safe mode, the recording started working with Google enabled.

This is what I did:

  1. Cleared cache and storage of Google app.
  2. Disabled it
  3. Restarted phone into safe mode
  4. Restarted phone into normal mode
  5. Enabled Google app. And, that's it.
  6. PS: I made calls at every step to make sure recording is working.