美文网首页
AVAudioSeesion

AVAudioSeesion

作者: iOS程序媛ing | 来源:发表于2021-09-18 14:50 被阅读0次

    参考iOS音频掌柜-- AVAudioSession

    如果项目中遇到播放音频没有声音的情况下,可以查看当前的category是哪种,对应的解决问题

    AVAudioSeesion的category属性确定了音频播放的方式
    1、是进行录音还是播放?
    2、当系统静音键按下时该如何表现?
    3、是从扬声器还是从听筒里面播放声音?
    4、插拔耳机后如何表现?
    5、来电话/闹钟响了后如何表现?
    6、其他音频App启动后如何表现?
    ...

    @property(readonly) NSString *category;
    

    category有七种类型
    每个App启动时都会设置成上面说的默认状态,即其他App会被中断同时相应“静音”键的播放模式。通过下表可以细分每个类别的支持情况:

    类别 当按“静音”或者锁屏是是否静音 是否引起不支持混音的App中断 是否支持录音和播放
    AVAudioSessionCategoryAmbient 只支持播放
    AVAudioSessionCategoryAudioProcessing - 都不支持 只支持播放
    AVAudioSessionCategoryMultiRoute 既可以录音也可以播放
    AVAudioSessionCategoryPlayAndRecord 默认不引起 既可以录音也可以播放
    AVAudioSessionCategoryPlayback 默认引起 只用于播放
    AVAudioSessionCategoryRecord 只用于录音
    AVAudioSessionCategorySoloAmbient 只用于播放

    可以看到,其实默认的就是“AVAudioSessionCategorySoloAmbient”类别。从表中我们可以总结如下:

    • AVAudioSessionCategoryAmbient : 只用于播放音乐时,并且可以和QQ音乐同时播放,比如玩游戏的时候还想听QQ音乐的歌,那么把游戏播放背景音就设置成这种类别。同时,当用户锁屏或者静音时也会随着静音,这种类别基本使用所有App的背景场景。
    • AVAudioSessionCategorySoloAmbient: 也是只用于播放,但是和"AVAudioSessionCategoryAmbient"不同的是,用了它就别想听QQ音乐了,比如不希望QQ音乐干扰的App,类似节奏大师。同样当用户锁屏或者静音时也会随着静音,锁屏了就玩不了节奏大师了。
    • AVAudioSessionCategoryPlayback: 如果锁屏了还想听声音怎么办?用这个类别,比如App本身就是播放器,同时当App播放时,其他类似QQ音乐就不能播放了。所以这种类别一般用于播放器类App
    • AVAudioSessionCategoryRecord: 有了播放器,肯定要录音机,比如微信语音的录制,就要用到这个类别,既然要安静的录音,肯定不希望有QQ音乐了,所以其他播放声音会中断。想想微信语音的场景,就知道什么时候用他了。
    • AVAudioSessionCategoryPlayAndRecord: 如果既想播放又想录制该用什么模式呢?比如VoIP,打电话这种场景,PlayAndRecord就是专门为这样的场景设计的 。
    • AVAudioSessionCategoryMultiRoute: 想象一个DJ用的App,手机连着HDMI到扬声器播放当前的音乐,然后耳机里面播放下一曲,这种常人不理解的场景,这个类别可以支持多个设备输入输出。
      AVAudioSessionCategoryAudioProcessing: 主要用于音频格式处理,一般可以配合AudioUnit进行使用

    相关文章

      网友评论

          本文标题:AVAudioSeesion

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