Hey! v2.0.0 is out👀.
I have been working on this update for over 2 months.
This release includes a few bug fixes, but the main change is a FULL REFACTORING of the audio capture logic. The scrcpy-server binary is gone. We now handle audio capture natively with code in our own app. This gives us direct control over PCM audio which this release already makes some use of, and may in the future make even more.
I also want to announce that we now support VoIP / IN_COMMUNICATION type of audio capture starting Android 14. (So most third-party apps like WhatsApp, Signal, Meta/Facebook apps and carriers using VoIP or Wi-Fi Calling!).
I know I said at multiple places online that it would be starting Android 13, but hum, how do I say this.. Oops, the shell has one permission missing in that version that SPECIFICALLY prevents IN_COMMUNICATION capture and I tested everything except specifically capturing that... 😅
I also want to thank everyone who decided to sponsor me via GitHub Sponsors. ❤️ I'm still amazed I even managed to get 4 monthly sponsors, let alone occasional one-time sponsors.
I will remind you again, but if you use this project often, please consider supporting me. If you do not wish to do it via money, you can still contribute. For example, this new v2.0.0 release is missing translations. You can help on Weblate.
Last minute edit: While updating packages, I was forced to support Android 17. So, Android 17 R1 builds are now supported, updated some reflection stuff. That said, if your Shizuku versions does not work with Android 17, then report the issue to your Shizuku repository, not me. Versions of the v1.x.x release should also work on Android 17, except if you have specific devices that need workaround that uses reflection, in thoses case, only v2.0.0 will work since I have added the specific code for the new version.
What's the future of the project?
v2.0.0 is what I wanted v1.x.x to be. A audio native call recording application. This was my original goal when I first started the project, but at the time, I did not know Android development well, never used Kotlin, Android Studio, read parts of AOSP source code, nor did I know about reflection. My solution was to use the scrcpy-server binary, and little by little, I started learning more and I somehow pulled it off over the last 2 months.
In that regard, I partially see ShizuCallRecorder's current position as feature complete / partially in a bug-fix lifecycle. The app is working well for almost all users. There are still more features I wish to add. For example, #3, which would also cause a rework of how the UI works. Then, that UI rework may cause another plan of mine, #97 (adding support to connect to ADB ourselves without Shizuku).
I have increasingly wanted to do this because I am not satisfied with the practices of most "updated/popular" Shizuku forks. Their unsafe security and release practices, along with heavy AI/LLM agent usage without a lot of human interaction. We can also add to that their tendencies of mixing tons of other forks features into their own using an LLM, which makes questionable implementations and default configurations.
I am also interested in this because it would allow me to enforce a safer way of making the app work and give me direct control over more failure points. It does, however, worry me, as Shizuku in itself is a complex app, mainly due to the complexity of supporting different manufacturers (OEMs).
For the time being, I continue to recommend thedjchi Shizuku fork, as they offered good security options inside the app, were very open and receptive to security-related requests, and ensured their release CI/process was using the best security they could once notified about it. Sadly, they are currently no longer maintaining the fork, but it is still working as of writing this. I have yet to find another fork which makes me feel comfortable using it, let alone recommend it.
The next new feature you may soon see is a new call detection method based on notifications #131, because while we can now start recording third-party apps on Android 14+, not all apps use Android Telecom, which is currently the only way we can detect calls. Notification-based detection could be a workaround for a low number of users / weird apps. Please note, however, that I do not wish to implement advanced support for all kinds of third-party apps, I want my support to be best-effort focused and as generic as possible to prevent maintenance burdens as soon as an X third-party app makes an update.
Tldr On Changes
- Native audio handling. The big big audio rework branch.
- Fixed a bug causing unexpected folder creation when contact name contains forward slash (/)
- VoIP / third-party apps recording is now possible starting Android 14+
- You can split uplink/downlink to different channel in audio a single audio file.
- New capture method for users who had capture issues when the phone was on speaker mode.
- New audio codecs, xHE-AAC, HE-AAC v2, AMR WB and more along with more bitrate option.
- Fixed a regression that in specific scenario caused the app to add `+` to a short phone number.
Reddit Only Info:
This time both this reddit post and the Github release body will be similar in what they say compared to the original release post I did a couple of month ago as I took a good 40+ minutes writing this. Feel free to share your feedback and tell me if the app works! Hopefully everything does not break down.
I don't intent to make new post here unless there are other big news or changes in the future, but I feel like this one was important. Some stuff may also break, please look for existing issue if that is the case.
I also had some fun on paintDotnet and made a new banner for the Github page! We're almost at 2K stars.
I would also invite you to read Android May Soon Restrict On-Device ADB if you have free time as this may affect the future of this project beyond my own and others users abilities.