iOS音频播放学习(2)

本文详细探讨了iOS平台中使用AVAudioSession进行音频播放的相关技术,包括获取AVAudioSession单例、请求录音权限、管理Audio Session、设置音频设备参数、处理Route Change事件以及监听音频状态变化。通过这些内容,开发者可以更好地掌握音频播放和处理的技巧。
摘要由CSDN通过智能技术生成

AVAudioSession

在上一遍学习中提到了AudioSession和AVAudioSession两个类,在苹果文档中可以看到,在iOS 7以后苹果建议使用的是AVAudioSession,所以AudioSession就等以后有时间再进行学习。
AVAudioSession是AVFoundation框架中的类,用来设置app的音频上下文,主要的功能有:
  • 激活或者取消app的audio session
  • 设置系统使用音频的方式
  • 配置如采样率,I/O缓存时长和信道数等音频设置
  • 处理Route Change(如拔出耳机后音频停止播放)
  • 应对其他事件
系统只允许一个session来控制audio routin。如果当前有多个sessions在运行的话,系统会根据当前的重要性来选择一个最重要的session并且判断该session是否允许混合。

获取AVAudioSession单例

[AVAudioSession shareInstance];

录音时请求用户允许

- (void)requestRecordPermission:(PermissionBlock)response // 参数response表示用户允许或拒绝时的回调函数
录音需要获取用户的允许,系统会自动跳出提示的。

typedef void (^PermissionBlock)(BOOL granted)
PermissionBlock,返回YES允许录音,NO则不允许

- (AVAudioSessionRecordPermission)recordPermission
返回当前录音的许可状态
有三个返回参数:AVAudioSessionPermissionGranted/AVAudioSessionPermissionDenied/AVAudioSessionPermissionUndetermined


管理Audio Session

@property(readonly) NSString *category
当前Audio session的类别,默认是AVAudioSessionCategorySoloAmbinet

NSString *const  AVAudioSessionCategoryAmbient ; // 该播放不是主要的。使用此类时,音频会与其他app的进行混合。锁屏或者静音模式下无法播放声音
NSString *const  AVAudioSessionCategorySoloAmbient ; // 锁屏或者静音模式下无法播放声音。音频不会与其他app混合
NSString *const  AVAudioSessionCategoryPlayback ; // 
NSString *const  AVAudioSessionCategoryRecord ;
NSString *const  AVAudioSessionCategoryPlayAndRecord ;
NSString *const  AVAudioSessionCategoryAudioProcessing ;
NSString *const  AVAudioSessionCategoryMultiRoute;
Audio Session的Category

@property(readonly) AVAudioSessionCategoryOptions categoryOptions
当前Category相关的选项

enum {
   AVAudioSessionCategoryOptionMixWithOthers  = 1, // 混合其他已激活的Session的音频。使用这个选项激活Session的话,会打断其他app正在播放的声音。如果不使用的话,则会打断其他不允许混合的session
   AVAudioSessionCategoryOptionDuckOthers  = 2, // 在本Session播放时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值