How to list available audio output route on iOS

2020-03-22 06:46发布

问题:

Now i'd like to list available audio output route in my iPhone app, something like this:

http://www.blogcdn.com/www.tuaw.com/media/2008/09/cb(iphone-101_-switch-between-audio-outputs-for-your-voicemail)1729387198273.jpg

i know that i can use audioRouteChangeListener of audio session to get route change info, but this method only can get the message after my app launch, so if headset and bluetooth both are connected before my app run, how can i get these routes' messages, any tips are appreciated.

Thanks.

回答1:

I got something working using MPVolumeView . This component has a button that lets you choose the output audio route, like in the Music App.

If you want you can hide the slider (and have only the button) using:

self.myMPVolumeView.showsVolumeSlider = NO;

At the moment I cannot find a way to obtain the output destinations and input sources programmatically as I pointed out in this question List available output audio target AVAudioSession



回答2:

there are only 5 audio input routes (iOS5+):

kAudioSessionInputRoute_LineIn;
kAudioSessionInputRoute_BuiltInMic;
kAudioSessionInputRoute_HeadsetMic;
kAudioSessionInputRoute_BluetoothHFP;
kAudioSessionInputRoute_USBAudio;

and there are 9 audio output routes (iOS5+):

kAudioSessionOutputRoute_LineOut;
kAudioSessionOutputRoute_Headphones;
kAudioSessionOutputRoute_BluetoothHFP;
kAudioSessionOutputRoute_BluetoothA2DP;
kAudioSessionOutputRoute_BuiltInReceiver;
kAudioSessionOutputRoute_BuiltInSpeaker;
kAudioSessionOutputRoute_USBAudio;
kAudioSessionOutputRoute_HDMI;
kAudioSessionOutputRoute_AirPlay;

find more information here how you can check the availability of them in your application.



标签: ios audio routes