├── FUNDING.yml ├── SUMMARY └── README.md /FUNDING.yml: -------------------------------------------------------------------------------- 1 | buy_me_a_coffee: androidmaestro 2 | -------------------------------------------------------------------------------- /SUMMARY: -------------------------------------------------------------------------------- 1 | Simulate microphone input from an audio file 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Phantom Mic 2 | 3 | An LSPosed (Xposed/Edxposed) module to simulate microphone input 🎤 from a pre-recorded audio file, useful for **automating audio calls** 4 | 5 |
6 | Demo Video 7 | 8 | https://github.com/user-attachments/assets/12a9d229-fd8a-4370-b969-1a342360abdf 9 | 10 |
11 | 12 | ## Tested Apps 13 | 14 | | Application | Status | 15 | | ------------------ | --------- | 16 | | Facebook Messenger | ✔ Working | 17 | | Discord | ✔ Working | 18 | | Telegram | ✔ Working | 19 | | Whatsapp ** | ✔ Working | 20 | | Google Chrome | ✔ Working | 21 | | .. You tell me! | | 22 | 23 | App ** : Recordings folder defaults to /sdcard/Android/data/app_id/files/Recordings because chose folder dialog doesn't work 24 | 25 | Note: your app might work if it's not on the list, let us know if you tried it! 26 | 27 | ## Usage Guide 28 | 29 | - Enable the module for your target app 30 | 31 | - Open your target app, you'll be prompted to choose a folder it for the module files 32 | 33 | - Inside the chosen folder, copy all your audio files to be played (*.mp3, *.wav, etc) 34 | 35 | - Inside the chosen folder create a new file phantom.txt, write the name of your target audio file (without extension is also fine) and save it. The file can be left empty if you want to use your microphone as normal. 36 | 37 | Note: If the target records audio to a file, there is a chance the module won't work. This is intentional because the main purpose is using it in calls. 38 | 39 | **Bonus Tip:** use an app like *MacroDroid* or *Tasker* to automate the process 40 | 41 |
42 | 43 | Example 44 | 45 | ### Folder Structure 46 | 47 | ``` 48 | CHOSEN_FOLDER 49 | |_ music.mp3 50 | |_ whatevername.wav 51 | |_ sample.aac 52 | |_ phantom.txt 53 | ``` 54 | 55 | ### Inside phantom.txt 56 | 57 | ``` 58 | music.mp3 59 | ``` 60 | 61 |
62 | 63 | ## Requirements 64 | 65 | - Android 7+ 66 | 67 | - [Root] LSPosed / Edxposed 68 | 69 | - [No Root] LSPatch theoretically works but not tested 70 | 71 | 72 | 73 | ## Module not working ? 74 | 75 | Please open a github issue. 76 | 77 | - If the app is labelled as "Working" in **Tested Apps**. Please attach libaudioclient.so, you can copy it from `/system/lib` or `/system/lib64, alongside logs. 78 | 79 | - Otherwise send play store version of the app and explain how I can test it 80 | 81 | ## Developer Notes 82 | 83 | The app relies on native hooking [AudioRecord.cpp](https://cs.android.com/android/platform/superproject/main/+/main:frameworks/av/media/libaudioclient/AudioRecord.cpp;l=1?q=AudioRecord.cpp&sq=&ss=android%2Fplatform%2Fsuperproject%2Fmain), feel free to take a look at the source code! 84 | 85 | # Links 86 | 87 | [XDA Thread](https://xdaforums.com/t/mod-xposed-phantom-mic-simulate-microphone-input-from-audio-file.4682767/#post-89623099) 88 | --------------------------------------------------------------------------------