AudioSession和AVAudioSeesion

来源:互联网 发布:gala乐队知乎 编辑:程序博客网 时间:2024/05/16 14:42

一、项目需要两种后台任务:下载和播放音频。所以使用了audio play的model来注册后台播放。

同时需要使用代码初始化AVAudioSession:

 AVAudioSession *session = [AVAudioSessionsharedInstance];

    [session setActive:YESerror:nil];

    [session setCategory:AVAudioSessionCategoryPlaybackerror:nil];

二、在app 的state处于background时,需要相应音量键的方法,于是采用

AudioSessionAddPropertyListener来添加kAudioSessionProperty_CurrentHardwareOutputVolume的callback,达到响应音量改变的事件。

 至此还未发现有AVAudioSession和AudioSession两个类。

 IOS8开始,AudioSession的一些API就失效了,比如上面使用的AudioSessionAddPropertyListener。

查看文档才看到AudioSessionAddPropertyListener是属于AudioSession的方法。

关于AVAudioSession和AudioSession的却别和用法,参考区别和用法。

三、因为AudioSessionAddPropertyListener已经deprecate,所以在AVAudioSession中寻找办法。

AVAudioSession提供了一系列NotificationName,但是我没有找到关于音量变化的。

看文档发现了一个属性 @property(readonly) float outputVolume ,突然想到可以使用KVO来监听volume的变化,不就间接实现了音量键的回调了吗?

添加监听者--实现协议方法--最终实现音量回调。

  • 具体KVO实现就不赘述。



0 0