美文网首页iOS Developer程序员IOS
iOS监听音量按键(长按 短按)

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

作者: 奥美拉唑 | 来源:发表于2017-02-09 15:18 被阅读1397次

      啦啦啦,先给大家拜个晚年,有时间把之前优化的小功能总结下,这个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:方法被调用时,我们需要判断是短按还是长按。因为当长按的时候观察输出,如下:

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

还有些细节上的:

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

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

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

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

相关文章

网友评论

    本文标题:iOS监听音量按键(长按 短按)

    本文链接:https://www.haomeiwen.com/subject/zibiittx.html