AVAudioSession 1
来源:互联网 发布:淘宝卖家如何打印订单 编辑:程序博客网 时间:2024/05/29 17:49
1 简介
AVAudioSession类由AVFoundation框架引入。每个iOS应用都有一个音频会话,它是一个单例对象,您可以使用它来设置应用程序的音频上下文环境,并向系统表达您的应用程序音频行为的意图。
用途
- 启用或停用应用程式的音讯工作阶段 。
- 设置音频会话类别和模式
- 设置类别setCategory:error:
- 设置模式setMode: error:
- 配置音频设置,如采样率,I / O缓冲区持续时间和通道数
处理音频输出更改 。 - 响应重要的音频事件,例如更改底层Media Services守护程序的可用性
- 通过overrideOutputAudioPort:error:方法设置音频会话的overrideOutputAudioPort属性,
- 通过setCategory:withOptions:error:方法来设置音频会话的Audio Route.
2 AVAudioSessionCategory(会话类别)
3 AVAudioSessionCategoryOptions(会话类别options)
- AVAudioSessionCategoryOptionMixWithOthers
- 当一个app即包含audio输入又包含输出的时候,设置这个选项在激活会话时不会打断其他应用程序的音频播放 。
- 可用类别
- AVAudioSessionCategoryPlayback
- AVAudioSessionCategoryPlayAndRecord
- AVAudioSessionCategoryMultiRoute
- AVAudioSessionCategoryOptionDuckOthers
- 激活会话时降低其他程序的音频播放声音 ,主要是体现当前音频的重要性,比如说开车听歌的时候,导航的声音就属于比较重要的或者是需要特别关注的就可以是用这个选项 。
- 会影响其他应用,不用时需要deactivate audio session
- 可用类别
- AVAudioSessionCategoryAmbient
- AVAudioSessionCategoryPlayAndRecord
- AVAudioSessionCategoryPlayback
- AVAudioSessionCategoryMultiRoute
AVAudioSessionCategoryOptionAllowBluetooth
- 允许可免提蓝牙设备可使用输入通道
- 可用类别
- AVAudioSessionCategoryRecord
- AVAudioSessionCategoryPlayAndRecord
AVAudioSessionCategoryOptionDefaultToSpeaker
- 在没有其他通道的时候默认选择内置扬声器
- 可用类别
- AVAudioSessionCategoryPlayAndRecord
AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWIthOthers
- 你的app偶尔的使用音频播放
- 可用类别
- AVAudioSessionCategoryPlayback
- AVAudioSessionCategoryPlayAndRecord
- AVAudioSessionCategoryMultiRoute
AVAudioSessionCategoryOptionAllowBluetoothA2DP
- 立体声蓝牙
- 可用类别
- AVAudioSessionCategoryPlayAndRecord
AVAudioSessionCategoryOptionAllowAirPlay
- 远程AirPlay设备
- 可用类别
- AVAudioSessionCategoryPlayAndRecord
//如果设置了这个选项,在关闭这个session时为了确保执行当前session之前被打断的正在播放的 audio app能都收到resume消息[myAudioSession setActive: NO with Options: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error: <#Your error object, or nil for testing#>];
4 AudioSession Route
- 默认音频输出为扬声器
- 在PlayAndRecord这个category下,默认音频输出为听筒。
- 扬声器,听筒,耳机,蓝牙音箱之间的切换
- 利用MPVolumeView来让用户切换到扬声器,
- 通过overrideOutputAudioPort方法来切换到扬声器
- 修改category 的option为AVAudioSessionCategoryOptionDefaultToSpeaker
- 多个外接音频接收设备时(耳机,蓝牙音箱等),将遵循last-in wins的原则来选择外接设备,即声音将被导向最后接入的设备。
5 通过AVAudioSessionPortOverride选择音频输出
4.1 AVAudioSessionPortOverrideNone
不要覆盖输出音频端口。使用此选项将音频输出设备返回到当前音频类别的默认状态。
4.2 AVAudioSessionPortOverrideSpeaker
覆盖当前输入和输出,设置音频输出设备为内置扬声器和麦克风。仅适用于AVAudioSessionCategoryPlayAndRecord类别。
4.3代码例子
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:error];
6 通过AVAudioSessionCategoryOptions选择音频输出设备
会话的类别和模式一起定义应用程序如何使用音频。通常,在激活会话之前设置类别和模式。您还可以在会话处于活动状态时设置类别或模式,但这会导致立即更改音频输出设备。
代码例子
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
AVAudioSessionCategoryOptions 枚举值:
//Eligible InputAVAudioSessionPortUSBAudioAVAudioSessionPortHeadsetMicAVAudioSessionPortBuiltInMic//Eligible OutputAVAudioSessionPortUSBAudioAVAudioSessionPortLineOutAVAudioSessionPortHeadphonesAVAudioSessionPortHDMIAVAudioSessionPortBuiltInSpeaker
6 overrideOutputAudioPort:和AVAudioSessionPortOverride的对比
共同点
- 使用仅适用于AVAudioSessionCategoryPlayAndRecord类别。
区别
- overrideOutputAudioPort:是临时覆盖。任何音频输出改变或中断将导致音频被路由回到其正常输出设备,遵循最后入胜的规则
- AVAudioSessionCategoryOptionDefaultToSpeaker,在没有使用耳机等其他附件时,音频将总是路由到扬声器而不是接收器。
举个例子
方法1, 设置之后,如果此时插入耳机,在拔掉。播放的声音会从听筒输出,而不是回到扬声器。 方法2, 设置之后,始终输出到扬声器,而不是其他接收器,如果没有耳机。(简要的说,就是如果有个蓝牙音箱,哪怕接上都不会有声音输出到蓝牙音响,插上耳机,则会有声音输出到耳机。)
1 AVAudioSession音频会话(类别选择/音频输出切换)
2 iOS开发系列–音频播放、录音、视频播放、拍照、视频录制
3 AVAudioSession(2):定义一个 Audio Session
4 程序音频iOS 音频指南:如何称职的管理自己的音频系统
阅读全文
0 0
- AVAudioSession 1
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession
- AVAudioSession样式
- AVAudioSession说明
- AVAudioSession bluetooth
- AVAudioSession的Category
- AVAudioSession的一般使用
- AVAudioSession会话类别
- AVAudioSession、AVAudioRecorder、AVAudioPlayer
- 学习的榜样
- fork和vfork的区别
- 微信企业号开发总结
- 区间dp
- python实现二叉树及插入,遍历操作
- AVAudioSession 1
- Emoji表情后台处理
- C
- 设计模式(9)--装饰模式
- Java字符串转义
- Spring零散记
- Java并发——Synchronized及其实现原理
- JAVA标示符与关键字
- 数据库设计三大范式