美文网首页
AVAudioSession 学习

AVAudioSession 学习

作者: 小猪圣骑士 | 来源:发表于2020-12-26 10:30 被阅读0次

AVAudioSession

image.png

作用

  • 配置音频会话类别和模式,以与系统交流您打算如何在应用中使用音频的方式
  • 激活应用程序的音频会话以使类别和模式配置生效
  • 订阅并响应重要的音频会话通知,例如音频中断和路由更改
  • 执行高级音频设备配置,例如设置采样率,I / O缓冲区持续时间和通道数

通知

音频中断
AVAudioSessionInterruptionNotification

AVAudioSessionInterruptionTypeKey

// 系统中断了您的音频会话
AVAudioSessionInterruptionTypeBegan = 1, 
// 中断已经结束
AVAudioSessionInterruptionTypeEnded = 0,

音频通道改变
AVAudioSessionRouteChangeNotification

AVAudioSessionRouteChangeReasonKey

// 原因不明。
AVAudioSessionRouteChangeReasonUnknown = 0,
// 有新设备可用(例如已插入耳机)
AVAudioSessionRouteChangeReasonNewDeviceAvailable = 1,
// 旧设备不可用(例如拔下了耳机)。
AVAudioSessionRouteChangeReasonOldDeviceUnavailable = 2,    
// 音频类别已更改(例如,AVAudioSessionCategoryPlayback已更改为AVAudioSessionCategoryPlayAndRecord)。
AVAudioSessionRouteChangeReasonCategoryChange = 3,
// 路由已被覆盖(例如,类别为AVAudioSessionCategoryPlayAndRecord,输出为已从默认的接收器更改为扬声器)。
AVAudioSessionRouteChangeReasonOverride = 4,
// 设备从睡眠中醒来。
AVAudioSessionRouteChangeReasonWakeFromSleep = 6,
// 当前类别没有路由时返回(例如,类别AVAudioSessionCategoryRecord但没有可用的输入设备)。
AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory = 7,
// 表示输入和/或输出端口的集合没有更改,但是它们的某些方面配置已更改。 例如,端口的选定数据源已更改。
AVAudioSessionRouteChangeReasonRouteConfigurationChange = 8

AVAudioSession

注意事项

当想重新设置AudioSession的CategoryOptions的时候,需要把categoryoptions恢复到默认值0,在设置新的Categoryoptions 例如:
从mixable模式切换到non-mixable模式:

// 1. mixable
[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions: AVAudioSessionCategoryOptionMixWithOthers error:nil];
// 2. options
[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions:0 error:nil];
 // 3. non-mixable
[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions: AVAudioSessionCategoryOptionAllowBluetooth error:nil];
[[AVAudioSession sharedInstance]setActive:YES error:nil];

当APP正在播放内容,设置 active 为NO([AVAudioSession sharedInstancesetActive:NO error:nil];),会立即停止当前的音乐播放。

锁屏界面上的播放按钮状态,是根据整个APP的播放情况来显示的,如果APP一直在播放音频,即使你设置
MPNowPlayingInfoPropertyPlaybackRate为0,播放按钮依然显示为播放状态。

相关文章

  • AVAudioSession 学习

    AVAudioSession 作用 配置音频会话类别和模式,以与系统交流您打算如何在应用中使用音频的方式 激活应用...

  • ios 播放没声音

    AVAudioSession *session = [AVAudioSession sharedInstance]...

  • 代码淘沙0801(A-录音权限验证)

    AVAudioSession *avSession = [AVAudioSession sharedInstance];

  • iOS AVAudioSession 详解

    AVAudioSession 简要说说AVAudioSession,AVAudioSession是苹果用来管理Ap...

  • 后台播放

    //开启后台播放 AVAudioSession *session = [AVAudioSession shared...

  • iOS 音频-AVAudioSession

    AVAudioSession 概述 最近在做 webrtc 采集与播放音频,使用AVAudioSession进行播...

  • AVAudioSession -- 音频管理

    AVAudioSession介绍 音频输出作为硬件资源,对于ios系统来说是唯一的;AVAudioSession可...

  • AVAudioSession

    这里首先感谢CZ_iOS看了他的博客,自己做了下记录.iOS给出的解决方案是"AVAudioSession" ,通...

  • AVAudioSession

    AVAudioSessionCategory AVAudioSessionCategoryOptions

  • AVAudioSession

    APP启动的时候会自动激活AVAudioSession单例,但是建议在使用前再次进行激活。 AVAudioSess...

网友评论

      本文标题:AVAudioSession 学习

      本文链接:https://www.haomeiwen.com/subject/xuygdktx.html