Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Call recording #17

Open
5 tasks done
ElsAr4e opened this issue Jan 9, 2024 · 23 comments
Open
5 tasks done

Call recording #17

ElsAr4e opened this issue Jan 9, 2024 · 23 comments
Labels
feature request Issue is about a new feature in the app needs triage Issue is not yet ready for PR authors to take up

Comments

@ElsAr4e
Copy link

ElsAr4e commented Jan 9, 2024

Checklist

  • I made sure that there are no existing issues - open or closed - to which I could contribute my information.
  • I have read the FAQ and my problem isn't listed.
  • I have taken the time to fill in all the required details. I understand that the feature request will be dismissed otherwise.
  • This issue contains only one feature request.
  • I have read and understood the contribution guidelines.

Is your feature request related to a problem? Please describe.
NO

Describe the solution you'd like
I would like to have the option to record calls

It has been discussed here:

SimpleMobileTools/Simple-Dialer#36 (comment)

Describe alternatives you've considered
I want to add this feature request (again) and ask the following question:

Do you have any plans to release your app on Google Play?
Because Google does NOT allow to apps to use the Accessibility Service for call recording.
Other apps like ACR-Phone therefore need the APH app too: https://nllapps.com/apps/cb/accessibility.htm

But I think F-Droid does not have such rules?
So you could release one app (only?) that records the call using the Accessibility Service?

Additional context
And maybe you can also provide an option for rooted phones. (Opt-in setting that checks if your phone is rooted and asks if you want to enable that option)

@ElsAr4e ElsAr4e added feature request Issue is about a new feature in the app needs triage Issue is not yet ready for PR authors to take up labels Jan 9, 2024
@Aga-C
Copy link
Member

Aga-C commented Jan 9, 2024

Please adjust your feature request report to the issue template.

@Aga-C Aga-C added the template missing The bug/feature template is missing label Jan 9, 2024
@ElsAr4e
Copy link
Author

ElsAr4e commented Jan 9, 2024

Please adjust your feature request report to the issue template.

Done.

@Aga-C Aga-C removed the template missing The bug/feature template is missing label Jan 9, 2024
@Aga-C
Copy link
Member

Aga-C commented Jan 9, 2024

@ElsAr4e Thanks!

@naveensingh Please check this.

@naveensingh
Copy link
Member

Do you have any plans to release your app on Google Play?

Yes, the majority of the users are from Google Play.

I'm aware of the call recording situation as this was being researched at SMT and sadly there was no reliable way to make it work. Adding this support for the F-Droid version using an accessibility service is an option but I'm not sure how reliable that will be. I have tried ACR and it didn't work reliably for me.

@Aga-C I got a feeling this will be requested again and again so let's just keep this open.

@ElsAr4e
Copy link
Author

ElsAr4e commented Jan 9, 2024

I have tried ACR and it didn't work reliably for me.

But I guess you've used it on a non-rooted device and Android 10+? (Because until Android 8 real call recording without root should be possible even if you are using non-system apps).

The dialer (system app) of GrapheneOS already has that option: https://grapheneos.org/releases#2023040400

But people who are using rooted phones could enjoy the call recording without any limits?

@naveensingh
Copy link
Member

I guess you've used it on a non-rooted device and Android 10+?

Yes.

people who are using rooted phones could enjoy the call recording

Yes, people with rooted phones (which includes me) could utilize this feature but the majority of the (future) users don't even know what root is so I don't want to add features requiring root permission. The Fossify apps still follow the Simple philosophy.

Since this is an attractive feature to many, we'll maybe try this using an accessibility service later.

@NickAndreou
Copy link

There is this ap called call recorder (duh) that works fine recording, maybe those who look for this option could use it, and the programmers here could get some ideas on how to implement a similar option. Below I will put the link that if not acceptable can be deleted.
https://gitlab.com/axet/android-call-recorder

@wyattwc
Copy link

wyattwc commented Apr 2, 2024

There is this ap called call recorder (duh) that works fine recording

The problem is reliable implementation of the feature. How android handles access has evolved over the years. My brand new A54 for example, this doesn't work.

To be able to reliably get good quality phone call recordings you'd need to do MediaRecorder#setAudioSource(VOICE_CALL), and it requires android.permission.CAPTURE_AUDIO_OUTPUT. If you can find a way to grab that permission without being root, let us know.

Outside of that, I would love to see the option implemented in a way that we could enable it if we have root.

@ElsAr4e
Copy link
Author

ElsAr4e commented Apr 3, 2024

Rooted devices can use the Basic Call Recorder: https://github.com/chenxiaolong/BCR

@naveensingh Once the device is rooted you should be able to use Fossify Phone and BCR together to record calls? Even if Fossify Phone does not have the recording option (yet)?


BTW: You can have real call recording if you are using Android 8.1 and maybe also Android 9. Just Android 10+ is the issue when it comes to call recording using third-party apps?

So if Fossify Phone supports Android 8.1 you could use Fossify Phone without root to record calls?

@wyattwc
Copy link

wyattwc commented Apr 3, 2024

True, but I thought this discussion was on non-rooted Android 10+ phones?

@ZMJGMADHPXWT
Copy link

It would be great to get such an option. And it could be perfect to have automatic call recording like an old MIUI dialer.

@AtmosphericIgnition
Copy link

I use many of the Fossify apps on my GrapheneOS phone, and this is unfortunately the only feature that keeps me using the stock phone app, instead of the Fossify alternative. I understand from this discussion that this could turn out to be a very complicated endeavor, but I still wanted to put down my "vote" for this feature.

@ElsAr4e
Copy link
Author

ElsAr4e commented May 21, 2024

@AtmosphericIgnition You'll probably never be able to use a third party call recorder - at least if GrapheneOS is based on Android 10+ GrapheneOS/os-issue-tracker#3401 (comment)

EDIT: If you mean "real" call recording and not just using the accessibility service for call recording.

@ZMJGMADHPXWT
Copy link

From what I've found, there is an option to automatically record calls in some Syberia and PixelMagic ROMs from the box. So looks like it's possible on Android 14.

@AtmosphericIgnition
Copy link

As far as my understanding of this problem goes, there are currently 2 ways to record a cellular phone call on modern Android.

  1. The hacky way:
  • This uses Android's accessibility API.
  • This can be done by any app you install.
  • You would likely need to install an app separate from your dialer.
  • To access the accessibility API necessary for this, the user needs to give the app doing the recording permission to do anything the user can do.
  • Offering this method will make Google kick your app out of the Play Store, as it goes against their guidelines for usage of the accessibility APIs.
  1. The "proper" way
  • This requires the android.permission.READ_PRIVILEGED_PHONE_STATE permission which guards the APIs necessary to actually intercept the actual audio of the phone call.
  • Normally, this permission is ONLY accessible to privileged system apps. This essentially means that if an app wants to use this permission, it must come preinstalled on your device.
  • GrapheneOS, and most likely, other OSS Android distros give their preinstalled phone app access to this privileged API, which is why they are able to record calls easily.
  1. The horribly insecure way
  • You need to root your phone.
  • You can grant the android.permission.READ_PRIVILEGED_PHONE_STATE to any app if you give it root access.
  • You should not give your dialer app root access.
  • You essentially completely sabotage the security model of your device. This will also make some fussy apps (banking, e-Government) detect you have root and stop working.

Neither of these methods is really suitable for Fossify apps, unless some Android distro would ship the Fossify dialer as their default dialer, and gave it access to android.permission.READ_PRIVILEGED_PHONE_STATE.

@Stan805
Copy link

Stan805 commented Sep 1, 2024

How I'd do it is basically just have the phone app simply check for if the phone is rooted or the phone app is installed as a system app (like if someone makes aa custom rom with the app) and then enable call recording. Preferably without an announcement like the stock Pixel Phone app has or like Apple will have in iOS 18.

@thisisartman
Copy link

If the issue is that only privileged system apps can access that permission, how about contacting Lineage? They use a modified AOSP dialer, but I'm sure a good Phone app that is actually usable wouldn't be an issue.

@Aryan-Chauhan
Copy link

+1

@chesio chesio mentioned this issue Nov 9, 2024
7 tasks
@IkelAtomig
Copy link

IkelAtomig commented Nov 11, 2024

@AtmosphericIgnition - How does Truecaller do that being distributed via PlayStore ?

Currently they use conference call feature to record the calls in iOS, same idea for Android but with their own Dialer.

@MKRhere
Copy link

MKRhere commented Nov 12, 2024

Apart from recording a call, I would like the option to record all calls. OneUI's Phone app has this, and I miss this on non-Samsung phones now.

@ElsAr4e
Copy link
Author

ElsAr4e commented Nov 12, 2024

As mentioned it is useless to implement such a feature if you don't have root access. And if you've successfully rooted your phone you can use the Basic Call Recorder: https://github.com/chenxiaolong/BCR.

And Android 15 might make it impossible to use the accessibility service for call recording - https://www.androidauthority.com/android-15-restricted-settings-sideloading-3481098/

@Jacoblightning
Copy link

Jacoblightning commented Nov 15, 2024

Could people not use shizuku or adb to grant the permission?

@naveensingh naveensingh pinned this issue Nov 17, 2024
@IkelAtomig
Copy link

@Jacoblightning - I think it is highly impossible without root. It's PRIVILEGED flag only available to system apps not user-installed. The app can only access it if it came pre-installed.

As I said, previously in my comment. The conference call technique by Truecaller is something that gives hope for this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Issue is about a new feature in the app needs triage Issue is not yet ready for PR authors to take up
Projects
None yet
Development

No branches or pull requests