iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
Call recorder for unrooted Android: phone, WhatsApp, Telegram, Viber and Google Meet calls, both sides, and an answering machine that takes a message when you can’t answer a phone call. No root, no Shizuku, no computer.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A call recorder for unrooted Android — phone and messenger calls.
Both sides of the call. No root, no computer, no second app — the phone sets itself up.
Website · Manual · Releases · Privacy policy · Support
Three looks - Memo, Deck and Multitrack - each light, dark or as the phone, in Settings → Theme.
The people in these screenshots do not exist: a screenshot of a call recorder is a screenshot of someone's calls, so the debug build invents them. Everything else is real.
Prefer to watch? The whole setup, start to finish, in 2:22 on YouTube, filmed on an Honor Magic 8 Pro.
Then run Settings → Diagnostics → Self-test. It answers, in about a second, whether your phone hands over both sides of a call.
The full manual, with what to do when a step misbehaves: on the web or in this repository.
F-Droid is the easy way: install the F-Droid client, search for JemRec, and updates arrive like any other app's. F-Droid is an installer the phone already trusts once you have allowed it, so nothing below applies.
The APK from Releases asks whether to allow installing from your browser or
file manager; that is the sideload prompt. The two are the same file: F-Droid
builds each tag on their own machine, checks the result against the APK here
byte for byte, and publishes this project's signed APK rather than one of
their own - so whichever way you installed, the other can update it in place,
with no uninstall and no pairing again. Verified on 0.8: what F-Droid serves is
byte-identical to jemrec-0.8.apk on the releases page, down to the signature.
Play Protect may get in the way, and what it takes differs by phone. It warns about apps it has not seen before, which is every app that is not on Play, so this is not a judgement about JemRec. Three phones, three outcomes:
| Phone | What happened |
|---|---|
| Honor Magic 8 Pro | Installed with no complaint. |
| Galaxy S20 | Refused. Turning Play Protect off long enough to install, then back on, worked. It is in the Play Store under your profile picture → Play Protect → Settings. |
| LineageOS | Refused from the browser. Opening the same file from the Files app installed it. Each app that can install needs Install unknown apps granted to it separately, and not every one of them is allowed to. |
To check what you downloaded rather than trust it: every release is signed with the same certificate, and the release workflow prints its digest on each run:
apksigner verify --print-certs jemrec-0.8.apk
SHA-256: 50aeab3630f0198ea3845db51413b1ad29582f78240fa2df6fe55ba8537afdf8
A reboot kills the recorder, and building it again takes a few seconds of Wi-Fi. With auto-start allowed (on an Honor: Settings → Battery → App launch → JemRec → Manage manually, with Auto-launch on), the recorder was back ten seconds after Wi-Fi came on, with the app never opened. Without it, the phone declined to start the app at boot and nothing came back by itself - opening JemRec once had it recording sixteen seconds later. That is the fallback, and it always works.
On MagicOS 11 a restart also leaves Wireless debugging switched on without starting it. Since 0.25.1 JemRec sees that and switches it off and on itself: recording again eleven seconds after its first try, which came as the phone was unlocked, with the app never opened.
Wi-Fi is needed to rebuild the recorder, never to use it. Once it is up, recording carries on with Wi-Fi off, on mobile data, anywhere. The measurements are in How JemRec works.
[!IMPORTANT] Recording calls is your responsibility. Consent law differs by country and sometimes by state: one party, all parties, or a spoken notice. JemRec records what you tell it to and warns nobody on your behalf.
Prefer to watch? What it does, in 1:51 on YouTube, on the app's own screens.
| Record every call, or be asked | Automatic mode records every call; ask-first records nothing until you tap Record. A Quick Settings tile turns recording on and off, and a long press on it opens JemRec. → more |
| Start at the answer | Exact call tracking cuts the ringing, skips calls nobody answered, and splits call waiting into one recording per call. → more |
| Keep only the calls you want | All your contacts, all but some, only some, or none - and other numbers on their own switch. → more |
| Messenger calls | WhatsApp, Telegram, Viber, and Google Meet calls and meetings, both sides, each switched on separately, with the caller's name from the app's notification. Android 14+. → more |
| See every call | The Calls tab is your call log, each call with its recording - or, if there is none, why. Search either list, or narrow it with a tap. → more |
| Name files your way | By date and time, with the caller, or the way Honor's Phone app plays them from its call history. → more |
| Play, keep, clean up | A call plays as its waveform, to see where people talk, and plays on with the screen off, under the phone's media controls; a keep mark, a 30-day Recently deleted, and auto-delete for old or very short ones. → more |
Recordings are Opus files in the phone's standard Recordings/JemRec folder,
where any file manager or music app can open them - or in a folder you choose.
Android's voice-call audio source carries both sides of a call, but only
system-level identities may read it - and the one an ADB session runs as, the
shell, is among them. Getting a shell normally takes a computer, root, or a
helper app like Shizuku. JemRec makes the phone its own computer:
flowchart LR
subgraph phone["Your phone - nothing leaves it"]
direction LR
app["JemRec app"]
adb["Wireless debugging<br/>(adbd)"]
rec["Recorder<br/>runs as the shell"]
file[("Recording<br/>Opus file")]
app -- "① pairs over 127.0.0.1" --> adb
adb -- "② starts it" --> rec
rec -- "③ records both sides" --> file
app -- "④ collects it,<br/>authenticated" --> rec
end
Wi-Fi is needed only to start the recorder - after a reboot, say - never to record. The full design, and the measurements behind each decision →
| Phone calls | Messenger calls | |
|---|---|---|
| Android 12 and 13 | ✓ | — Android does not allow it |
| Android 14 and newer | ✓ | ✓ WhatsApp, Telegram, Viber, Google Meet |
Google Meet was tested on the Honor: calls both ways and a meeting. Signal takes the same path as the other messengers and has not been tested yet. Developer options and Wireless debugging are on every Android phone, though the menu they live in differs by make; JemRec names the right path for yours. OPPO, OnePlus and realme phones on their own systems (ColorOS, OxygenOS, realme UI) need one more switch there, and setup names that too.
Both sides of the call have been recorded on five phones, across three very different Android builds:
| Phone | Build |
|---|---|
| Honor Magic 8 Pro (BKQ-N49) | MagicOS 10 and 11, Android 16 and 17 — the phone it was developed on |
| Samsung Galaxy S20 | One UI |
| Samsung Galaxy S23 | One UI, Android 16 — over Wi-Fi Calling too, which it carries like a messenger call |
| Samsung Galaxy M34 | One UI 8.5, Android 16 — over Wi-Fi Calling too, since 0.24, as its owner reported |
| OnePlus | LineageOS 23 |
Five is not a compatibility list. The one thing nobody can promise for a phone they have not held is its audio hardware: some hand over both sides of the call, some one, some silence. The Self-test answers it on yours in about a second: it opens a real capture over the same path a call takes and tells you what came out of it.
The answering machine has been tried on two phones: the Honor, on 2G calls (its carrier would not register it for VoLTE), and a Galaxy S23 over Wi-Fi Calling. Whether a phone carries a greeting to the caller is up to its audio hardware too - Android's own answer was wrong on the Honor - so the answering machine's settings hold its own checks and a test call.
In the order F-Droid's listing page shows them, because a permission a call recorder does not explain is one its user has to guess at:
| Permission | Why |
|---|---|
INTERNET | Not about the internet: Android requires it for any TCP socket, including one to 127.0.0.1. |
ACCESS_NETWORK_STATE | To tell whether there is Wi-Fi to rebuild the recorder over, instead of trying and failing. |
WRITE_SECURE_SETTINGS | Granted by the app to itself over its own ADB session. Nothing but a shell can grant it, so no user can be talked into it. It lets JemRec switch debugging back on when the phone turns it off, and off with JemRec when you ask it to. |
POST_NOTIFICATIONS | The recording notice, the ask-first prompt, the pairing code box. |
FOREGROUND_SERVICE, FOREGROUND_SERVICE_SPECIAL_USE | To stay alive while a call is being recorded and while the finished file is collected; while the recorder is restarted after a computer's cable comes out; and for the seconds it takes to warn that the phone stopped JemRec in the background. SPECIAL_USE is the honest type: the microphone type would need a microphone permission this app does not hold. |
FOREGROUND_SERVICE_MEDIA_PLAYBACK | To play a recording on with the screen off, under the phone's media controls. It plays; it never records. |
RECEIVE_BOOT_COMPLETED | A reboot kills the recorder; this is what arms the job that rebuilds it. |
READ_MEDIA_AUDIO | To list recordings made before a reinstall. Refusing it only hides those. |
READ_EXTERNAL_STORAGE | Android 12 only, which has no READ_MEDIA_AUDIO: the same, to list recordings made before a reinstall. It covers photos and videos too; JemRec reads only its own folder. Refusing it only hides those. |
READ_CALL_LOG, READ_CONTACTS | Optional. The only way to know who a call was with: to label a recording, to name a file after the caller, to keep or leave out a call by who it was with, and, for the call log, to notice a call that went unrecorded. |
MANAGE_ONGOING_CALLS | For exact call tracking. Not one an app can ask for: the daemon allows it, as the shell, while the switch is on. Android then tells JemRec when each call is answered and ends. Tracking never acts on a call; the answering machine's answering is the recorder's, as the shell. |
What is left out, and why, is in How JemRec works.
Yes, where the phone's audio hardware hands both sides over - which it did on every phone above. The Self-test tells you for yours in about a second. In a messenger call each side has a channel of its own, you on the left and the other person on the right; a phone call has them so where the phone keeps the two apart, as the Honor does, and on others - a Pixel, by one report - both channels carry the same mix. On speakerphone, a messenger call's other person is heard on your side too: your side is the plain microphone, without the call app's echo cancellation. A call that still comes out with one side - over Wi-Fi Calling, say - is worth an issue on GitHub: tap Copy a report in Diagnostics right after it and paste that in.
Yes, calls and meetings, both sides, on Android 14 or newer - once you switch Google Meet on under Messenger calls. Like the messengers, it is off until you do. Meet puts its calls through Android's own call service, and up to 0.21 JemRec took them for phone calls and recorded every one, meetings included. Now a call is a phone call only when Android says the phone itself is in one.
On the two phones it has been tried on, yes. No app can play sound into a call, so the recorder does it as the shell: on the Honor through an output Android calls in-call music, on a Galaxy S23 over Wi-Fi Calling through Android's call-screening route; not every phone has either. Before you switch the answering machine on, its Checks tell you in a second whether yours does, and a Test call settles it for that kind of call: 2G, VoLTE and Wi-Fi Calling differ. Your microphone is muted while the greeting plays and the message is left, so the caller hears your greeting and nothing of your room.
Only to start the recorder: that is the one step that needs Wireless debugging, which Android runs over Wi-Fi. Once started, the recorder carries on with Wi-Fi off, on mobile data, anywhere. A reboot stops it, and the next few seconds of Wi-Fi bring it back by themselves (see Get started, step 3). Unplugging the phone from a computer can stop it too (a charger does not); on Wi-Fi it is back within seconds, by itself. With the screen off, step 3 matters here as well: without it, an Honor's battery manager kept the recorder down for about four minutes in two tests of three, and 8.5 minutes in another. Until then nothing is recorded - the header says so, a notification says the phone held JemRec back the moment it lets JemRec run again, and one says the recorder is down if it stays down two minutes. And if When JemRec is off is set to Turn all debugging off, turning JemRec back on needs Wi-Fi too.
Settings → Start without Wi-Fi takes the Wi-Fi away from all of that until the phone restarts: it opens debugging port 5555, which the recorder can be started over with no network at all. After a restart, the first start needs Wi-Fi once, as before. The cost is the open port, on every network the phone joins whenever USB debugging is on - unless Turn all debugging off goes with JemRec; see Starting without Wi-Fi.
Play removed call recorders in 2022 by forbidding the Accessibility API for recording, and no policy change since has re-opened the door. That is a distribution decision, not a technical one - the app itself never needed Play, and F-Droid asks only that a build be free software and reproducible from its source, which this one is. It never will be on Play.
It depends on where you and the other person are: some places need one party's consent, some everyone's, some a spoken notice. That is your responsibility; JemRec records what you tell it to and warns nobody on your behalf.
In the phone's standard Recordings/JemRec folder (or the folder you chose),
as Opus files any music app can play; Share can also convert one to .m4a for
iPhones and Macs. They are yours rather than the app's, so they stay when
JemRec is uninstalled - delete them first if you want them gone. Deleted ones
wait in Recently deleted for 30 days. Installed again, JemRec shows them as
they were, once you let it read them (it asks): each recording carries its own
marks - a message, kept, who a messenger call was with - inside the file.
Your phone refuses JemRec the one setting setup grants it until a switch of the phone's own is set, and the card names it. On an OPPO, OnePlus or realme phone it is Disable system optimization, the last switch in Developer options' Apps section (Disable permission monitoring on older ones; where it says just Permission monitoring, turn that off instead); some show it only in English, so if it is not there, set the phone's language to English, turn it on and set the language back. On a Xiaomi it is USB debugging (Security settings). Then tap Try again. Setup does not finish without that setting: it is what lets JemRec turn Wireless debugging back on after a restart. Leave it that way afterwards: the recorder needs it too, to turn debugging off when JemRec is uninstalled. Reported from two OnePlus phones (issues #61 and #64); we have none to try it on.
Choose in Settings → When JemRec is off what goes off with JemRec, then turn JemRec off - with the record button or the Quick Settings tile - before you open the bank:
Try the first; if your bank still refuses, the second. With Start without Wi-Fi on, the first leaves debugging port 5555 open while JemRec is off, which a bank may look for too; the second closes it. Turning JemRec back on puts back what it switched off. Measured on an Honor (Android 17): with Developer options and Wireless debugging off, the recorder ran on through Wi-Fi off and on, a locked screen and a call, recorded both sides. Our own banks open with debugging on, so we could not test one that refuses - if yours needed the second choice, or neither worked, say so in issue #37.
Uninstall JemRec first. If the recorder is running, it notices the uninstall within a few minutes, turns both debugging switches off and exits - on an OPPO, OnePlus or realme phone only while its Disable system optimization switch is set as setup asked, or they stay on for you to turn off. Either way, once JemRec is gone nothing turns them back on. To have it off only while JemRec is off, see the question above.
JemRec is free: no ads, no account, and nothing collected about you. If it has been useful to you, you can support its development on Donatello.
Build with JDK 21 (exactly - the daemon's bytes depend on it) and an Android SDK with platforms 37 and 36 and build-tools 36.0.0:
./gradlew assembleDebug # build
./gradlew test # 911 tests, screenshots of the screens included
| How JemRec works | The design, the measurements behind it, every feature in depth, and every permission. |
| Developing JemRec | Building, the tests (logic, screenshots, emulator checks), and how a release reaches F-Droid. |
| SETUP.md | The end-user manual: every step, and what to do when one misbehaves. Generated by tools/build_site.py along with the same page on the site - edit it there, or the two drift. |
| ADB-NOTES.md | Four undocumented behaviours of the ADB library, each measured, each of which cost a day. |
| fastlane/metadata | The F-Droid listing: description, changelogs, icon and screenshots, written by tools/render_icon.py and tools/shoot.py alongside the README's. |
Everything else that would have gone in a document is in the code, beside the thing it explains, with the measurement it came from.
Apache-2.0. See LICENSE, and NOTICE.md for what is
vendored and under what terms — chiefly an audio-only fork of
scrcpy's server in shellserver/, whose
every modification is listed in shellserver/PATCHES.md.
| Hear about problems | A notification after each call, and one when a recording is silent, the recorder is down, a call went unrecorded, or the phone stopped JemRec or held it back in the background. A call that came out wrong? Copy a report in Diagnostics says how it was recorded, for an issue on GitHub. → more |
| Answering machine | Off until you switch it on. Answers a phone call you have not taken after 5 to 30 seconds - after two rings when Do Not Disturb would silence the caller - plays the greeting you recorded and keeps the message, by the same rules as recording. Take the call or hang up from its notification while they speak. It stands down for a day after you call an emergency number. A test call tells you whether it works on your phone. → more |
| Open your banking app | Some banking apps won't open while Developer options or debugging is on. Turning JemRec off can hide Developer options too, or switch all debugging off; turning it on puts back what it switched off - away from Wi-Fi too, with Start without Wi-Fi. Settings → When JemRec is off. → more |
| Three looks | Memo, calm and simple; Deck, a pocket recorder with an LCD and a REC key; Multitrack, a sound editor with a colour for each caller. Each light, dark or as the phone, in Settings → Theme. → more |
USE_FULL_SCREEN_INTENT| Lets the ask-first prompt last a minute instead of five seconds. Not auto-granted, and nothing is gated on it. |
WAKE_LOCK | So the keep-alive job can finish its few seconds of work, and so a phone with its screen off stays awake while it brings the recorder back after a USB cable, a minute and a half at most. WorkManager declares it too. |