10
votes

How do I force the Android system to select the 3.5mm Jack as my microphone source? I am using the AudioRecord class to do the recording.

I am using an external Microphone. When it is detected all works well, but sometimes the external microphone is not detected automatically. A TRRS splitter (cheap $3 thing) is used to split the 3.5mm Jack into separate Mic and Headphone jacks (I need simultaneous recording and playback).

The AudioManager.setWiredHeadsetOn() is deprecated and instructions say not to use it.

1) Do I maybe need additional external hardware to provide the correct microphone impedance?

2) Can I force the input in code?

3) Can a custom ROM archive audio control at this level - maybe this is the best option?

Thanks

1
It could be the hardware issue. Please try if it works well and stable with a stock phone's headset. TTRS plugs differ in many cases (different leght of rings) and this leads to connection problems. - Kristopher
The stock headphones work well....(the TRRS jack looks exactly like the headset jack). The problem is likely hardware related. I need to use a specific external microphone and therefore have to force the jack on irrespective of the external hardware setup. - user2819360
Depending on how bad the hardware issue is, it might be possible to counter by modifying the headset detection driver. I'm afraid I can't provide any information on how you'd go about doing that, since it isn't something I've ever attempted myself. - Michael

1 Answers

4
votes

It is very likely a hardware issue. Samsung phones seem to require a microphone with impedance of around 1.0k - 1.5k Ohm. Try modifying the input mic line by adding a series resistor to raise the impedance. Check out this link for details on how to do this: xdadevelopers - External mic on Galaxy devices