美文网首页
iOS中切换麦克风的输入源以及音频播放的输出源

iOS中切换麦克风的输入源以及音频播放的输出源

作者: 爱吃馒头的鱼 | 来源:发表于2018-03-07 15:17 被阅读0次

    一、麦克风的输入源

    在iOS开发中,录音时如果是连接无线蓝牙外设时,将输入源切换为手机端或蓝牙耳机,此时需要切换AudioSession中的Category,如果是手机端的麦克风为AVAudioSessionCategoryPlayAndRecord,如果是外设则为AVAudioSessionCategoryPlayAndRecord同时附带的option参数为AVAudioSessionCategoryOptionAllowBluetooth,具体代码如下:

    1.切换到手机端:

        AVAudioSession *audioSession = [AVAudioSession sharedInstance];

        [audioSession setActive:NO error:nil];

        [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

        [audioSession setActive:YES error:nil];

    2.切换到蓝牙外设:

        AVAudioSession *audioSession = [AVAudioSession sharedInstance];

        [audioSession setActive:NO error:nil];

        [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord  withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];

        [audioSession setActive:YES error:nil];

    二、音频播放的输出源

    1.切换到手机播放,如果是扬声器播放,则有以下两种方式:

    1). 修改Category的默认行为:

    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];  

    2). OverrideOutputAudioPort:

    [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; 

    这两种方法的区别官方文档中有详细的说明。

    在iOS7.0之前可用下面方法重定向(属于AudioSession):

    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;  

        AudioSessionSetProperty (  

                                 kAudioSessionProperty_OverrideAudioRoute  

                                 sizeof (audioRouteOverride),  

                                 &audioRouteOverride  

                                 );  

    2.如果是切换到外设播放,如下:

            [audioSession setCategory:AVAudioSessionCategorySoloAmbient error: nil];

    说明:Category也可以换成AVAudioSessionCategoryPlayback,这两者的区别是AVAudioSessionCategoryPlayback可以在程序进入后台播放,AVAudioSessionCategorySoloAmbient在程序进入后台就停止播放。

    相关文章

      网友评论

          本文标题:iOS中切换麦克风的输入源以及音频播放的输出源

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