美文网首页
ios 设置音频掌柜需要注意的一些情况

ios 设置音频掌柜需要注意的一些情况

作者: 撸代码我是认真的 | 来源:发表于2018-09-07 12:25 被阅读0次

    一、什么是音频掌柜即AVAudioSession。

    我的理解:它是专门用来管理音频资源的,是一个跨进程的单例,只能被当前激活该单例的进程占用。

    二、使用场景:

    录音、播放音乐、耳机插拔、闹铃响,别的app激活。。。都需要管理该单例,详细介绍可以看下这篇文章写得还是很详细的 iOS音频掌柜-- AVAudioSession - 简书

    三、注意点:

         1、手机麦克风边录制边播放,无额外的蓝牙协议。(插耳机只用A2DP协议的也同样适用)

                该情况需要设置的分类为AVAudioSessionCategoryPlayAndRecord,会打断正在播放音乐的别的app。那么如何混进音乐呢?设置AVAudioSessionCategoryOptionMixWithOthers,仍然没有作用,我测试了下面三个场景,这三个场景都设置了AVAudioSessionCategoryOptionMixWithOthers。

          1.1、先用别的app播放音乐,再录制。

                这种场景下会先打断别的app音乐播放,无法混进音乐。

           1.2、先录制,再用别的app播放音乐。

                这种情况下由于自身app设置了允许混音所以可以混进别的音乐,如果不设置AVAudioSessionCategoryOptionMixWithOthers,仍然混不进音乐。

            1.3、自己app边录制边播放。

                 这种情况下可以混进别的音乐。

    注意:设置AVAudioSessionCategoryPlayAndRecord同时播放音乐和录音的时候,播放的音量特别小,会把扬声器关闭。你需要重新设置扬声器,代码如下:

    AVAudioSession *session = [AVAudioSession sharedInstance];  [sessionoverrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];

              2、经过MFI认证的蓝牙录制

                    该情况下只需要设置分类为AVAudioSessionCategoryPlayback和AVAudioSessionCategoryOptionMixWithOthers,就不会打断别的app里面的音乐播放。如果当前app要播放音乐,还要录音,那么这时候需要打断别的app里面的音乐播放,这样就不需要设置AVAudioSessionCategoryOptionMixWithOthers,只设置AVAudioSessionCategoryPlayback。

    相关文章

      网友评论

          本文标题:ios 设置音频掌柜需要注意的一些情况

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