🚀 What's Changed
Hey! v2.0.0 is now ready 👀. I have been working on this update for over 2 months, which is why there was no new release and non-major bugs did not get patched.
This release includes a few bug fixes, but the main change is a FULL REFACTORING (#1) 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 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... 😅
That said, I still want to credit the scrcpy project as I would not have been able to do it without using their code as reference. While I inspired myself and had to make adjustments along with implementing more methods, they still laid out the base work that allowed me to know how it worked and where in AOSP source code I needed to look.
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 release is 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.
🔭 The future of this project
v2.0.0 is what I wanted v1.x.x to be. A 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 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.
Last minute edit: If you have some free time, I recommend checking out Android May Soon Restrict On-Device ADB as this may affect the future of this project. Hopefully it won't.
More Details On Changes
- refractor: Native audio handling. The big big audio rework by @kitsumed in #132
- Fixed a bug causing unexpected folder creation when contact name contains forward slash (/) and was used in the file name template. (#125)
- VoIP / third-party apps recording is now possible starting Android 14+ on non-pixel devices (#13 , #130)
- New audio codecs, xHE-AAC, HE-AAC v2, AMR WB and more along with more bitrate options! (#49)
- You can now split uplink and downlink audio on separate channel (left/right) of the recording. (#73)
- Fixed a regression that in specific scenario caused the app to add
+to a short phone number. (#114) - Android 17 Support (R1 release, did not test) and bumped packages along with phone number metadata 23a7b7b
- Updated Gradle to 9.8.2 8f4095c
- Bumped GitHub Actions versions and switched to pinned commit b0f63a6
- Updated translations
Contributors
- Translations : @oersen @camellan @avishj @Guzleon @kitsumed @Mehrshad0101 and everyone else who have been missed or did not link their github account to weblate.
Full Changelog: v1.3.3...v2.0.0
This is a tool, use it responsibly, and follow the law. Read the app disclaimer, it's a one time thing, don't skip it.