iOS监听音量按键(长按 短按)

      啦啦啦,先给大家拜个晚年,有时间把之前优化的小功能总结下,这个demo是仿照Snapchat的短按音量键拍照长按录制。首先呢我先谢谢Github上的作者(四年前的老工程 用的mrc 有些方法已经废弃了,看到黄色的提示我就闹心。。。。但是思路是很好的)我是在其基础上做了些优化,增加了长按喝短按的判断,回调了三个方法,分别是:

1.短按。-(void) volumeButtonCameraClick:(MPVolumeObserver *) button

2.长按开始。-(void) volumeButtonStarVideoClick:(MPVolumeObserver *) button

3.长按结束。-(void) volumeButtonEndVideoClick:(MPVolumeObserver *) button

具体录制和拍照就靠大家自己喽 ,整体简单,使用比较方便,算是给自己巩固一下,也希望可以帮到大家。

核心就是通过通知监听音量变化:

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

当volumeChangeNotification:方法被调用时,我们需要判断是短按还是长按。因为当长按的时候观察输出,如下:

iOS监听音量按键(长按 短按)_第1张图片

        当长按的时,第一条数据和第二条数据间隔为0.6秒 之后间隔都是0.1秒,通过间隔时间去判断是长按还是短按(判断处会比较恶心具体的可以看下面demo)。

还有些细节上的:

1.当程序推到后台需要把通知移除掉,当程序回到前台的时候需要添加通知。

2.在修改声音前需要先记录音量大小,当音量改变的时候让其随时回到初始音量,不然的话长按音量键会使音量持续变化影响拍摄。

3.最后再说下如果录制拍摄时需要以第三方APP做背景音乐的话(例如录制视频时需要使用网易音乐做背景时) 需要[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers error:nil];进行配合。


2019.4.11

       完善之前代码中视频录制和拍照的检测原理。之前说的每条数据间隔是0.1秒,这个说法是有问题的,真想抽自己,上面的我也不改了,给自己个提醒,具体的说0.103287 ~ 0.106338秒 ,因为之前项目需求时间不长,所以0.1的话没有发现问题。

最后上Demo 如果帮到您 请给颗星哦,如果哪里有问题请指出。

你可能感兴趣的:(iOS监听音量按键(长按 短按))