We are developing an app that needs to change the audio route in iOS. We need to get some information from the mic input and then change to the internal mic of the device to record ambient sound.
We have seen 2 topics from these pages: Forcing iPhone Microphone as Audio Input and Use built-in mic if Headset is plugged in but i guess there isn't any final word according to this situation.
Now, the code works but we can select the route of the audio input.
We haven't found anything in the documentation provided by Apple (Remote IO).
Is there anything new about this?
Thanks!
Warning: This answer applies to iOS6 only. It is not correct for iOS7 or later. See comments for details.
This is possible, but only with a side effect. Changing the input device also changes the output device. You will not be able to record through the internal mic and at the same time listend to your recording in realtime through the headset's headphones. That means that if you do not want to listen simultaneously to your recording through the headphones, there is a solution for you:
When having connected a headset (= combined headphones and mic), you can choose between two alternatives:
(You can not use a mixture of these.)
You choose one of the alternatives by setting the property kAudioSessionProperty_OverrideAudioRoute through the function AudioSessionSetProperty of the Audio Session Services API. The documentation of the property says:
If a headset is plugged in at the time you set this property’s value to
kAudioSessionOverrideAudioRoute_Speaker
, the system changes the audio routing for input as well as for output: input comes from the built-in microphone; output goes to the built-in speaker.