This application is a hotfix for a really annoying (and potentially unsafe!) bug in the Epic4G:
http://code.google.com/p/android/issues/detail?id=11372
http://forum.sdx-developers.com/epi...audio-routing-on-epic-4g/msg115990/#msg115990
The long and sort of it is that when anything is plugged into the 3.5mm headphone jack, the phone will only play call audio over that jack.
In order to route the audio through the earpiece, bluetooth or speakerphone, you must pull the plug out of the jack. This is at the very least annoying, and at the very worst potentially dangerous if, for example, you're driving.
How-To
Download the APK attached below for your android version.
Install like any other APK using adb or your favorite file manager.
What it does
This simple application allows you to pick the audio device to use for call audio to override this behavior, and can be changed on the fly.
All in-call audio will be routed to the device you specify when something is plugged into the 3.5mm headphone jack. If nothing is in the jack, the default behavior for the phone applies.
This also allows you to use the Speaker Phone when the headphone jack is occupied, even though the button on the call screen is disabled!
Your configuration should persist between reboots.
What it doesn't do
This app does not route any other type of audio. Your music, notifications, etc will still play over the headphone jack or phone speaker.
Again, this *only* affects in-call voice audio, and only when something is plugged into the headphone jack.
Notes
This app completely overrides the options on the call page! If you want to switch outputs during a call, you will have to do it from this app - your call will not be dropped when changing the output device.
In order to route the call audio properly, the system's mediaserver service must be restarted, however.
This means that any other audio you have playing when you apply the change will be disrupted, and related services may force close. For example, Pandora will skip to the next song. Other applications may not behave that well.
Disclaimer
This app modifies files in the /system partition, so use this at your own risk! I am not responsible for any problems that arise from this hotfix on your device!
This is currently for the EPIC4G *ONLY* - Do not use this on any other device. Please contact me if you have a different phone which experiences this bug and I will see if I can get it working for you as well.
This is *BETA* software, a work in progress, please post here if you experience any issues, but I cannot guarantee it will work for you!
ROM DEVs, feel free to bake this into your roms in whole or part, I encourage it as this provides a workaround for a safety issue, but please give credit if you use or derive from this application.
Special thanks to UberPinguin - his initiative, debugging, code-diving and testing helped make this happen every step of the way!
Many, many thanks to everyone in #samsung-epic for helping me test and work this out.
Be sure to download the APK for the right android version on your phone!
epicBT - v0.3.5 (Froyo)
* Fixed crash/reboot when applying settings in DK17 roms
epicBT - v0.3
* Layout cleanup when root is unavailable
epicBT - v0.2
* Requires root!
* Superuser compatible
* auto-remounts /system RW if necessary
* Sends call audio to wired device ( default ), speaker phone, or bluetooth
Sources
https://github.com/cicada/epicBT
If this works as described above I will be so f-ing happy. One of my biggest gripes, solved.
No sh#t! I was just about to start searching the Market for an app like this! Downloading now to test.
Thank you!
bigdbag said:
If this works as described above I will be so f-ing happy. One of my biggest gripes, solved.
Click to expand...
Click to collapse
I agree
updated OP with source link
First of all,...Thank you, Thank you, Thank you for working on this... This was one of my biggest gripes with this phone and I couldn't understand why the "geniuses" at Samsung/Sprint couldn't get this right.
I've done some extensive testing in my car for the Eclair version and wanted to share my results:
For the most part, the app does what it's supposed to...but I did notice that:
1) the "on the fly" feature doesn't work so well. That is, when changing from one mode to the other, I had to reboot the phone to get the new setting to take effect. This feature would be great with an app like Tasker, which could automatically open up the app and ask you which setting you want to use when a headset/aux jack is plugged in,...thus giving you the flexibility to use the best option depending on your situation. Is there a way to tweak the app to recognize the switch without rebooting by resetting something like the mediashare service?
2) For some reason, the mic volume (volume heard on the opposite end of call) on the bluetooth setting is lower when the headset/aux jack is plugged in. I'm not sure whether the regular phone mic, speaker phone mic, or the bluetooth mic is utilized in this setting, but the volume is definitely harder to hear on the other end than when the headset jack is unplugged. I would guess about 20-25% lower. I tested this effect during the call as well by plugging and unplugging the jack while counting 1 to 10 and it's the same. Is there away to increase the sensitivity of the bluetooth mic when the headset jack is plugged in?
Donation coming if you can get this working! Thanks again.
sinman02 said:
1) the "on the fly" feature doesn't work so well. That is, when changing from one mode to the other, I had to reboot the phone to get the new setting to take effect.
Click to expand...
Click to collapse
Strange, it works well for me - it takes a second to switch outputs while mediaserver is restarting, but never had to reboot. I'll look into this, may have accidentally tweaked something in the last build.
UberPinguin and I are still looking at the sources to find a better fix that works the way it's supposed to - the trouble seems to be that Phone.apk is actually selecting the 'correct' source and setting options appropriately, but the underlying OS isn't switching outputs. Restarting mediaserver was the only workaround I could find for this.
sinman02 said:
2) For some reason, the mic volume (volume heard on the opposite end of call) on the bluetooth setting is lower when the headset/aux jack is plugged in. I'm not sure whether the regular phone mic, speaker phone mic, or the bluetooth mic is utilized in this setting, but the volume is definitely harder to hear on the other end than when the headset jack is unplugged. I would guess about 20-25% lower. I tested this effect during the call as well by plugging and unplugging the jack while counting 1 to 10 and it's the same. Is there away to increase the sensitivity of the bluetooth mic when the headset jack is plugged in?
Click to expand...
Click to collapse
I hadn't noticed any volume issues but truthfully I haven't been using the BT often because of this bug - I've just been letting my calls go to VM instead of crashing my car Volume selection should be working properly so I'll see if I can add something to select volume as well.
To be clear on the MIC, input should always be the proper input for whichever mode you choose - phone MIC for speakerphone and BT mic for BT HP/HS.
If you're on stock then the phone mic should be used when your wired device doesn't have it's own, however this is broken in all of our custom community kernels - Wired Headset mode should only be used when you actually have a wired headset with a MIC of it's own if you're using one of these, otherwise the phone doesn't enable any MIC at all.
I should note, that all my tests were conducted on outgoing phone calls. I don't know if incoming calls are any different. I am using the Syndicate rom.
If you can get the bluetooth volume issue resolved, I'll likely leave it there, but it would be nice to be able to switch on the fly to speakerphone mode when bluetooth isn't handy.
Question: Does the froyo version have the same implementation?
Please keep up the good work!
Sent from my SPH-D700 using XDA App
sinman02 said:
Question: Does the froyo version have the same implementation?
Click to expand...
Click to collapse
Yes, the froyo version is the same - Samsung used a different asound.conf in froyo ( added in some interesting VOIP pcm ), so this is the only difference between versions currently.
cicada said:
This application is a hotfix for a really annoying (and potentially unsafe!) bug in the Epic4G:
The long and sort of it is that when anything is plugged into the 3.5mm headphone jack, the phone will only play call audio over that jack.
In order to route the audio through the earpiece, bluetooth or speakerphone, you must pull the plug out of the jack. This is at the very least annoying, and at the very worst potentially dangerous if, for example, you're driving.
Click to expand...
Click to collapse
...So this should work on for Sip/VOIP apps like Sipdroid, 3CX, and Fring? I managed to pick up 3CX and Sipdroid through my bluetooth headset but no mic...meaning the other end could not hear me... There aren't that many good sip/voip soft wares out there for the Android today.. I rated Fring the BEST but with no bluetooth support.
EDIT: Nevermind... I read the post again.. I don't think this will do the job other than support for the actual phone.. but it would be nice to have that option for sip/voip as well.
The SIP/VoIP stuff may work better in Froyo considering there are dedicated PCM devices listed in the asound.conf - however I've never used any of these applications, so this is pure speculation.
You're correct, this does only effect in-call phone audio, those applications would be handling (or in this case, not) the bluetooth audio routing directly. I've found lots of other similar quirks with BT on the Epic4G, such as the << and >> buttons on my A2DP headphones not working.
cicada said:
The SIP/VoIP stuff may work better in Froyo considering there are dedicated PCM devices listed in the asound.conf - however I've never used any of these applications, so this is pure speculation.
You're correct, this does only effect in-call phone audio, those applications would be handling (or in this case, not) the bluetooth audio routing directly. I've found lots of other similar quirks with BT on the Epic4G, such as the << and >> buttons on my A2DP headphones not working.
Click to expand...
Click to collapse
I am using Froyo the DJ29 Build on the epic... Dare I try?
****ing yea! Thanks, downloading now. This has been my biggest complaint with the phone
Sent from my SPH-D700 using XDA App
Hell Yea! You rock! I Threw out a fairly long search sentence in google and actually found your post here. No sooner did I install and set it up that my phone rang while plugged into the car audio and FINALLY I can use my friggin BT headset without yelling hold on hold on I gotta unplug the stereo cable. This has really peeved me off since I got the phone. Now what I don't get is why this obvious flaw has been ignored by Samsung and Sprint. Nice job on making it work like it should. BTW running stock 2.1 with root. No bugs so far.
THANK GOD. someone fixed this. bugged me so much in the car when i'm receiving a call. will report any bugs.
bump, updated to fix crash in DK17 based roms
cicada said:
I hadn't noticed any volume issues but truthfully I haven't been using the BT often because of this bug - I've just been letting my calls go to VM instead of crashing my car Volume selection should be working properly so I'll see if I can add something to select volume as well.
To be clear on the MIC, input should always be the proper input for whichever mode you choose - phone MIC for speakerphone and BT mic for BT HP/HS.
If you're on stock then the phone mic should be used when your wired device doesn't have it's own, however this is broken in all of our custom community kernels - Wired Headset mode should only be used when you actually have a wired headset with a MIC of it's own if you're using one of these, otherwise the phone doesn't enable any MIC at all.
Click to expand...
Click to collapse
As others, I'm very grateful for this fix. After trying it out, if it works for me, donation on the way.
Regarding the MIC: My experience, all the way back to pure stock (IIRC) is that there is no MIC at all when a two-channel, stereo plug is inserted (headphones, cassette adapter, etc.). Every time I've been driving, listening to something via the headset jack, when a call comes in I can hear the other party, but they can't hear me at all until I unplug from the jack. So, even though there was no mic plugged in and the device was correctly sending 2-channel audio out through the jack (usually to a cass adapter, so I can listen via my car stereo), but doesn't "do the right thing" with the mic, even though the hardware and drivers are capable of detecting the absence of the mic.
It should, of course, default to the BT mic if there is a BT connection, or the built-in mic otherwise. For some reason this simple flow-diagram logic eludes Samsung.
So I got my first experience with this today...worked great. I was streaming Pandora, phone call came in, music was paused and I answered the call. Once I finished the call, the music continued playing. Minor detail, but since I was on WiFi, is there anyway that the music could have kept on playing while I was still on the call for the sake of my guys who were still working while I was taking the call? It's great that the music paused and resumed by itself, but it would have been cooler to have it keep going while I was on the call.
m5james said:
.. is there anyway that the music could have kept on playing while I was still on the call .. ?
Click to expand...
Click to collapse
Unfortunately Pandora's phone-state listeners control that, it'd have to be modified or their devs would have to add options for it. Would be cool though, I agree
I've got a hacked version of Pandora that allows unlimited skips, I'll have to ask the guy who did it to see if they can tweak that as well. Come to think of it, it'd be nice to have it keep going for the times I'm driving down the road as well so whoevers in the car doesn't have to sit there and listen to me blah blah blah.
I've searched around on the forums for an answer to this but could never find anything that seems to match up to my issue.
I have a A2DP enabled headset and want to use it with apps such as Team Speak 3 beta, Vent, and other apps. But for some reason although phone media happily plays over onto my headset. My phone continues to only use the mic built into the phone instead of the bluetooth headset mic.
Any apps designed to use the headset specifically work (ie. normal phone calls, skype, vlingo) but otherwise apps ignore the headset mic.
I already tried using apps like BT Mono and Super BT Mono Froyo but they seem to only pipe audio to the headset, but don't do anything at all with the headset mic.
Does anybody know how to get the headset mic to be selected by apps instead of just the built-in mic?
My device is a Sumsung Galaxy S II ( I9100 ). Both Stock and CyanogenMod Gingerbread
good good good
Still hoping someone may know how to get the Galaxy S II phone to use a bluetooth headset mic instead of the built-in mic on the phone.
I'm really stumped on how to do this.
I still haven't seemed to have any luck finding a way to forcefully map apps to use the headset mic. I'm beginning to wounder if it's possible with the Android OS.
I have the galaxy s2 as well and I've retired several different things and have been unsuccessful with anything I've tried so far... Really difficult to drive and use vent without a headset.
Yeah I'm wanting to do the same thing.. I don't spose you've found a way in the last couple of months? Surely it can be done - may need to get a dev to write something for it though..
Sorry Lilfellabob, still no luck. I find it odd it's so difficulty to remap audio settings.
Even in Ice Cream Sandwich I can't find a way.
The app would need to be written to accept it. Its not a matter of your phone. Its the apps. Think about it for a min. If it works on apps made to use it but another app doesn't work then where does the problem lay?
The thing is, typically other apps should be able to re-route the app to use the headset mic. Alike how there are apps that can force other apps to use bluetooth audio instead of the phone speaker, even if the phone/headset can't use a2dp.
Dav_Edward said:
The thing is, typically other apps should be able to re-route the app to use the headset mic. Alike how there are apps that can force other apps to use bluetooth audio instead of the phone speaker, even if the phone/headset can't use a2dp.
Click to expand...
Click to collapse
Only if the code is there for it to do it. If they don't code it in then it doesn't work.
I'm having a similar problem but slightly the opposite.
I pair my phone to a Bluetooth device that lets me hear phone output on my car's speakers. However, the phone tries to use Bluetooth for the microphone when none exists. I want to force it to use the on-phone microphone. I can talk and talk but no one can hear me, unless I set the phone output to speaker or handset, which implies setting the phone input to amplified built-in mic, or just built-in mic, respectively.
In the Bluetooth settings I can set to use the Bluetooth device for music or phone, but ideally I would want "Phone" to be separated into "Phone output" and "Phone input" so I could uncheck input (and thus use the built-in mic.) This should be implemented at the Android level so that the setting can apply to all apps.
The same problem occured when I wired (2-stripe phone-to-car audio only, no mic) my Palm Pre directly to my car. I just tried with my GNex and it was smart enough to use the built-in mic when a microphone-less plug was connected.
zelendel said:
Only if the code is there for it to do it. If they don't code it in then it doesn't work.
Click to expand...
Click to collapse
wrong. its in the kernel. the new firmware on the android is is capable to transmit Audio Steam to Headset device as Audio only. i wont go 100% against coding to force it to but if they wanted to theres have to be some kind of exploit to do so. lets say if skype were to find that exploit or code it, it would be probably violate android policy.
HtcEvo4gLTE said:
wrong. its in the kernel. the new firmware on the android is is capable to transmit Audio Steam to Headset device as Audio only. i wont go 100% against coding to force it to but if they wanted to theres have to be some kind of exploit to do so. lets say if skype were to find that exploit or code it, it would be probably violate android policy.
Click to expand...
Click to collapse
Actually, what's going on is Skype is using the 'bluetooth device' hook of some sort, just like other apps that support piping audio to the bluetooth headset. However most apps don't use the bluetooth device API/hook and just dumbly send their audio to 'default output device' and 'default input device' blindly and let the OS or Kernel decide where to send it.
The OS or Kernel when it senses a bluetooth device with the 'media' profile on it is present, it changes the default output device to the headset, but it doesn't seem to bother doing the same for the bluetooth mic for the default input device.
Because apps like Teamspeak 3 just blindly use default audio device because it doesn't use bluetooth APIs in the app itself, I have no way to make it use the headset mic.
I wish someone could make a mod or app that will allow mapping the default input to a bluetooth mic when present.
As far as I know, Skype has problems using the BT mike as well. In fact, they took a user survey regarding the issue for android and iOS users. However, I cannot find the results of that survey / study, and Skype recommendations thereof.
User choice to use BT mike seems so BASIC to me, I wonder how it was overlooked...!
Rooting will crack open the full power of your Android device!
Dav_Edward said:
Sorry Lilfellabob, still no luck. I find it odd it's so difficulty to remap audio settings.
Even in Ice Cream Sandwich I can't find a way.
Click to expand...
Click to collapse
zelendel said:
The app would need to be written to accept it. Its not a matter of your phone. Its the apps. Think about it for a min. If it works on apps made to use it but another app doesn't work then where does the problem lay?
Click to expand...
Click to collapse
Rooting the device would give apps or the user permissions to modify system audio controller's (idk if it is anything like ALSA or anything..) settings to make app use the audio channel for the bluetooth headset... an example for the Galaxy s2 i9100 i have is the radio app "Sprit FM" has a "volume control stream" setting which allows the user to select what volume "control" will control the volume of the app's audio output
anywho... i hope it helps a little
rwong48, I have now the same problem that you have described. Have you solved it with any app for Andorid?
Thanks!
Solution
I found an app that solves this problem on android devices, it's called btmono and you can find it in the Google store. I tried to post the link but I don't have enough posts under my belt...
Anyways, pair your device, open the program (such as ts3), connect to your server and then turn on btmono. Voila!
Well, I tried to delete this after I saw that you had already tried btmono, but I couldn't figure out how so just disregard this message.
I already tried btmono, sadly although it works for the output audio, it does *not* work with the headset mic. Programs like TS3 will still keep using the phone's built-in mic, not the headset mine despite using btmono. The only thing btmono does is pipe the output audio to the headset only.
Thanks for the suggestion though
I can't believe they haven't fixed that yet. It is so basic...
Hey guys I'm going through the same issues with my note 2. Svoice was the only one that works but its painfully slow and inaccurate.
Anyways I've tried utter! robin and aivc. Aivc works pretty good but at least it uses the mic.
Utter is really promising but no Bluetooth mic. The devs have acknowledged it though. So hopefully soon.
Update: AIVC has one downfall. The app can't open if the screen is locked like utter and svoice can when prompted from bluetooth. Also, it only listens automatically the first time. If you close it without killing the app, you'll have to press the mic icon manually every time (which takes away from the purpose of handsfree).
I'm on 8.1 dp2 in hopes of a fix but it doesn't seem to have helped. My Bluetooth audio skips once every song or two and it's super frustrating while in my car. I've tried disabling WiFi and Bluetooth scanning and adjusting the codec options but nothing seems to work? Anyone else with this issue or a solution? I just received wireless earbuds so I'll test those to make sure it's not my stereo but my s8 had worked fine...
Ok say my new ear buds are Bluetooth 5 and I haven't noticed a single skip yet. My stereo is only 3 so maybe that has something to do with it? As far as I can find however there are no current bt5 stereos so I'm not sure what the issue or solution would be...
Enable the developer options. You can choose between sound quality and connective stability. You can also lower the sampling rate to 44100kHz. In a word, reduce the data transferring rate. I think these might help.
I did all of that and have tried all the options
slyr114 said:
I did all of that and have tried all the options
Click to expand...
Click to collapse
I have had this problem cropping up on various Toyota forums with the root cause being the automotive entertainment systems. It appears that most newer systems are still based on 2008/9 technologies which only have a limited ability to buffer the B/T audio. I'm not suggesting that this is your car but I thought it is worth mentioning.
Ive got a Sony stereo I put in myself haha it's relatively new
If you put a search string "problem mic headphones" in XDA forums, you'll get tens if not hundreds of threads which start at least in 2015 and consider Xiaomi as well as Samsung, OnePlus, sometimes Moto phones - both on vendor and custom OS. Most of the threads are created in model specific subforums and most of them are left unanswered, even though the issues repeat from time to time, from one manufacturer to another. If I catch it correctly, Xiaomi (Redmi, Mi) is the champion in this field. But problems persist in other phones too.
One of the biggest issues often reported is that one day (or from the very beginning) when you put headset jack in, your interlocutor hears you badly. Your voice is too weak or ambient noise is too loud in respect to your speech. In many cases a proposed solution is 1) to install Mic Fix module for Magisk (on rooted phones). But it does not always work. 2) To change the headset and 3) to clean the physical jack hole. In many reported cases this does not help neither. So, there is a software switch which does not work.
I entered the club and having this precise issue with my Redmi Note 10 Pro running first on vendor Miui then on CrDroid 8. I changed three different wired headsets, including the one by Xiaomi, with no result. Installed Mic Fix module for Magisk (both latest updates), with no effect.
Manipulating the phone during the call or during a test record (bringing it closer and further to the mouth, putting it into my pocket with headset attached, etc.), I acknowledged that the problem is that the phone takes inbound audio signal from the phone built-in microphone and not from the headset. Both in mobile calls and in various messengers. Meanwhile listening to my interlocutors, as well as music alone is just fine.
Trying to solve the issue I found several great apps and Magisk modules, such as Dolby Atmos and Viper4Android FX equalizers which enhance your listening experience. But I found no clearly designated app or module which lets take control of the microphone when headset is attached. Literally no dedicated app or feature in all-rounder apps lets tweak the mic use. Meanwhile the issue persists during at least 7 years.
Maybe the solution is so evident, and the app/module is so easily and widely used that it's a shame to discuss such a noob topic? Please break the silence and tell which tools you use for tuning or tweaking your mic in the headset.
And if you already faced the same or a similar problem and found the same (zero) software solution for Android, what is the rational reason why such an app or module was not yet made by an expert and creative dev?
By now a solution that I found is to use a bluetooth headset. In this case the mic works well during calls.
But I like using wired headsets (and sound quality of mine wired is better than those on bluetooth). So I am still in search for an app or module to tweak or fix the mic redirection issue.
If someone can help, please be kind to give a hint.
Same here my man, and although my issue is slightly different, it's looking for the same solution, an app to tweak the mic
I'm using a oneplus 3 and my favorite ROM is Resurrection Remix (A10), but, if you use CTIA headsets (mine are earbuds because i don't like in-ear), sometimes the headset gets detected as OMTP and the mic produces a really loud hight pitch noise
So far i haven't found any solution, besides reconnecting the headset several, several times until it gets it right