使用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激活就行了。
相关文章推荐
- Mina源码阅读笔记(五)—Mina对连接的操作IoSession
- IOS获取时间戳并转化为对应格式的时间
- iOS判断字符串是否包含子字符串
- iOS获取设备标识符、型号等信息
- IOS开发:对TextField或TextView添加文字限制
- Ios和tvos按需请求资源简介
- iOS-获取Wifi的IP和名字
- iOS开发 - CocoaPods的使用
- IOS关闭虚拟键盘
- iOS 打包ipa 教程
- 变量重复定义的奇怪bug
- iOS 9 loadViewIfNeeded的使用
- iOS 笔记-自定义的导航栏按钮
- iOS之Xcode设置点滴记录(二)
- IOS 导航条 以及 状态栏颜色 相关设置
- iOS之__block和__weak使用
- iOS 21种设计模式之抽象工厂(Abstract Factory)
- iOS开发之多线程基础
- iOS开发之如何跳到系统设置里的WiFi界面
- iOS沙盒的文件操作