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

一、什么是音频掌柜即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 设置音频掌柜需要注意的一些情况)