监听音量键的两种方法

来源:互联网 发布:企业办公软件app 编辑:程序博客网 时间:2024/05/17 02:43

http://www.jianshu.com/p/4f2fc34a3a52

1、使用KVO监听属性outputVolume

首先,注册监听


注册监听音量变化

在监听的回调中判断是否是我们监听的属性,所有使用KVO监听的属性都是同一个回调方法,当你子类和父类监听了多个属性,必须进行判断。


当音量增加到最大,或者减低到最小变成静音的时候,系统不会再发送音量改变的消息,就是按下音量键的时候,系统不会调用上面的回调。在iOS7之前可以自己设置音量大小,让音量不会增加到最大或者减少到最低。在iOS7 之后,该方法被弃用。

2、使用通知消息机制:

监听AVSystemController_SystemVolumeDidChangeNotification消息。


该消息除了监听音量键之外,应用从后台切换到前台也会发送该消息,所以,还需要判断消息的userInfo的字段AVSystemController_AudioVolumeChangeReasonNotificationParameter,确定发送消息的理由,value值为ExplicitVolumeChange就是我们所需要的。


3、注意:

使用以上两种方法监听音量键,在用户按下音量键的时候,还是会显示系统的音量键弹出框,也会改变系统的音量大小。我们可以自定义一个弹框,放置在屏幕外面,并且显示。这样就会优先显示我们自定义的弹框,不会显示系统自带的。如果自定义的弹框hidden 为YES,也是会弹出系统的提示框。


避免改变系统的音量大小的方法还没找到,以我的理解,无论是上面的KVO还是消息通知都是在系统改变音量之后才会发送消息的。


0 0
原创粉丝点击