您的位置:首页 > 移动开发 > IOS开发

使用AudioSession实现音乐后台播放功能

2015-12-07 11:23 477 查看

使用AudioSession实现音乐后台播放功能:

首先介绍一些AudioSession的基本概念:

使用AudioSession的一些作用就是:确定使用音频类型,是配设备,以及协调音频以及其他功能



那么,要通过AudioSession实现一个后台播放功能我们就要先看看AudioSession的使用方法:

首先是初始化调用方法:

extern OSStatus AudioSessionInitialize(CFRunLoopRef inRunLoop,
CFStringRef inRunLoopMode,
AudioSessionInterruptionListener inInterruptionListener,
void *inClientData);


通过函数要求的参数输入我们可以看到,前两个指定流的线程,一般指定主线程就行,填NULL,第四个上下文数据填当前的self就可以了一般,第三个就是重要的回调函数了:

填写回调函数就可以实现我们需要的功能,所以为了实现我要的功能,我写了以下的回调函数:

static void inInterruptionListener(__unused void * inClientData, UInt32 inInterruptionState) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"InterruptionNotification" object:@(inInterruptionState)];
}


通过一个消息通知进行传递当前中断状态,然后在初始化的时候注册一下观察者:(别忘了最后析构的时候移除)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:) name:@"InterruptionNotification" object:nil];


当然,初始化完成后还需要设置你需要的sessionCategory,以下是audioSession的Category类型:

@enum           AudioSession audio categories states
@abstract       These are used with as values for the kAudioSessionProperty_AudioCategory property
to indicate the audio category of the AudioSession.
@constant       kAudioSessionCategory_AmbientSound
Use this category for background sounds such as rain, car engine noise, etc.
Mixes with other music.
@constant       kAudioSessionCategory_SoloAmbientSound
Use this category for background sounds.  Other music will stop playing.
@constant       kAudioSessionCategory_MediaPlayback
Use this category for music tracks.
@constant       kAudioSessionCategory_RecordAudio
Use this category when recording audio.
@constant       kAudioSessionCategory_PlayAndRecord
Use this category when recording and playing back audio.
@constant       kAudioSessionCategory_AudioProcessing
Use this category when using a hardware codec or signal processor while
not playing or recording audio.


通过设置AudioSessionSetProperty进行参数设置

然后通过AudioSessionSetAtivate将Session激活就行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: