【发布时间】:2015-10-20 13:28:50
【问题描述】:
我需要列出可用的输出(例如 BleutoothLE、HeadPhones、BuiltInReceiver),但我只能访问 currentRoute 的输出。
任何人都可以访问所有可用的输出,请分享您的 cmets 吗?
提前致谢。
【问题讨论】:
标签: ios xcode avaudiosession
我需要列出可用的输出(例如 BleutoothLE、HeadPhones、BuiltInReceiver),但我只能访问 currentRoute 的输出。
任何人都可以访问所有可用的输出,请分享您的 cmets 吗?
提前致谢。
【问题讨论】:
标签: ios xcode avaudiosession
据我所知,您有两种选择:
将MPVolumeView 添加到您的视图中,并将showsVolumeSlider 设置为0 并将showsRouteButton 设置为1。这将放置一个系统提供的图标,用户可以在其中从可用输出中进行选择。
AVAudioSession 有一个非常有限的overrideOutputAudioPort 方法,可以将音频路由到内置扬声器。
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
【讨论】:
我不知道为什么没有简单的availableOutputs 属性。
但您可以通过使用多路径音频类别并检查当前路径的输出来获取所有可用输出的列表:
let sesh = AVAudioSession()
try! sesh.setCategory(AVAudioSessionCategoryMultiRoute)
try! sesh.setActive(true)
print("available outputs: \(sesh.currentRoute.outputs)\n")
输出(和输入)来来去去,导致路由改变,所以订阅路由改变通知:
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "routeChanged:",
name: AVAudioSessionRouteChangeNotification,
object:nil
)
NB:多路径类别有很多关于何时输入/输出直观可用的规则实际上可用(例如,扬声器不“可用”当您插入 USB 声卡时,但有线耳机将插入)。
你想做什么?我已经使用多路由播放 4 通道音频,但我不确定您是否真的可以在输出之间混合和匹配。
【讨论】:
使用AVAudioSession's currentRoute获取所有输出的列表:
AVAudioSession *session = [AVAudioSession sharedInstance];
NSLog(@"Outputs: %@", [[session currentRoute] outputs]);
【讨论】: