iOS音频文件播放切换扬声器

    • AVAudioSession是一个单例,无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用

      针对不同的音频应用场景,需要设置不同的音频回话分类


      AVAudioSession的类别

      AvAudioSessionCategoryAmbientkAudioSessioncategory_AmbientSound   用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关闭而静音.并且不会中止其他应用的声音.可以和其他自带应用如iPod,safari等同时播放声音.


      AVAudioSessionCategorySoloAmbeientkAudioSessionCategory_SoloAmbientSound类似于AVAudioSessionCategoryAmbient不同之处在于它会中止其他应用的声音.


      AVAudioSessionCategoryPlaybackkAudioSessionCategory_MediaPlayback 用于以语音为主的应用,这个category的应用不会随着静音键和屏幕关闭而静音.


      AVAudioSessionCategoryRecordkAudioSessionCategory_RecordAudio 用于录音的应用,设置category后,除了来电铃声,闹钟或日历提醒之外的其它系统声音都不会播放


      kAudioSessionCategory_PlayAndRecordAVAudioSessionCategoryPlayAndRecord用于既需要播放声音又需要录音的应用.语音聊天应用(如微信).

       

      AVAudioSessionCategoryAudioProcessingkAudioSessionCategory_AudioProcessing当需要进行离线语音处理时使用category.


      注意:并不是一个应用只能使用一个category,程序应该根据实际需求来切换设置不同的category荣:录音的时候需要设置为AVAudioSessionCategoryRecord,当录音结束的时候应根据程序需要更改category为AVAudioSessionCategoryAmbient,AVAudioSessionCategorySoloAmbeient中的一种


      设置category

      AVAudioSession *audioSession = [AVAudioSession sharedInstance];

      [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];

      [audioSession setActive:YES error:nil];


      设置音频播放为扬声器

       UInt32 audioRouteOverride = 1;

       AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,

                                sizeof (audioRouteOverride),

                                &audioRouteOverride);







你可能感兴趣的:(iOS学习)