AVAudioSession 输出选择
Posted
技术标签:
【中文标题】AVAudioSession 输出选择【英文标题】:AVAudioSession output selection 【发布时间】:2015-05-02 06:54:15 【问题描述】:如果 iPhone 连接了多个输入和输出配件,我希望用户能够手动选择输入和输出源。我可以通过查询 [[AVAudiosession sharedInstance] availableInputs] 然后在 iOS 7 中使用 setPreferredInput:error 方法手动选择输入,但我找不到任何类似的输出。我该如何做到这一点?我正在使用 PlayAndRecord 类别。
【问题讨论】:
【参考方案1】:Apple 不希望开发人员以编程方式更改输出路径/音量。也许 MPVolumeView 是您的选择。
添加一个 MPVolumeView,然后将它的 showsRouteButton 设置为 YES。
The Apple Documentation 说,“当有多个音频输出路由可用时,路由按钮默认可见。”
像这样:
编辑: 虽然 Apple 不希望开发者以编程方式更改输出路由,但有时我们仍然可以在 iPhone 未连接耳机/耳机时强行更改输出路由:
AVAudioSession* session = [AVAudioSession sharedInstance];
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
[session setActive:YES error:nil];
这仅在 iPhone 未连接耳机/耳机时生效。
【讨论】:
【参考方案2】:您可以通过调用outputDataSources 获取可用的输出,并使用setOutputDataSource 更改它。
【讨论】:
"此功能仅在某些 USB 配件上受支持。"这听起来不太有希望。 不正确的答案 - 这是为了在您已经设置音频路由之后在输出之间切换单个外围设备,例如具有前置和后置扬声器的设备。以上是关于AVAudioSession 输出选择的主要内容,如果未能解决你的问题,请参考以下文章
Audio Device Strategy 音频设备输出输入 选择 基于7.0 代码