? ? ? 啦啦啦,先給大家拜個晚年,有時間把之前優(yōu)化的小功能總結(jié)下,這個demo是仿照Snapchat的短按音量鍵拍照長按錄制。首先呢我先謝謝Github上的作者(四年前的老工程 用的mrc 有些方法已經(jīng)廢棄了,看到黃色的提示我就鬧心。。。。但是思路是很好的)我是在其基礎(chǔ)上做了些優(yōu)化,增加了長按喝短按的判斷,回調(diào)了三個方法,分別是:
1.短按。-(void) volumeButtonCameraClick:(MPVolumeObserver *) button
2.長按開始。-(void) volumeButtonStarVideoClick:(MPVolumeObserver *) button
3.長按結(jié)束。-(void) volumeButtonEndVideoClick:(MPVolumeObserver *) button
具體錄制和拍照就靠大家自己嘍 ??,整體簡單,使用比較方便,算是給自己鞏固一下,也希望可以幫到大家。
核心就是通過通知監(jiān)聽音量變化:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChangeNotification:)name:@"SystemVolumeDidChange" object:nil];
當(dāng)volumeChangeNotification:方法被調(diào)用時,我們需要判斷是短按還是長按。因為當(dāng)長按的時候觀察輸出,如下:

? ? ? ? 當(dāng)長按的時,第一條數(shù)據(jù)和第二條數(shù)據(jù)間隔為0.6秒 之后間隔都是0.1秒,通過間隔時間去判斷是長按還是短按(判斷處會比較惡心具體的可以看下面demo)。
還有些細(xì)節(jié)上的:
1.當(dāng)程序推到后臺需要把通知移除掉,當(dāng)程序回到前臺的時候需要添加通知。
2.在修改聲音前需要先記錄音量大小,當(dāng)音量改變的時候讓其隨時回到初始音量,不然的話長按音量鍵會使音量持續(xù)變化影響拍攝。
3.最后再說下如果錄制拍攝時需要以第三方APP做背景音樂的話(例如錄制視頻時需要使用網(wǎng)易音樂做背景時) 需要[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers error:nil];進(jìn)行配合。
2019.4.11
? ? ? ?完善之前代碼中視頻錄制和拍照的檢測原理。之前說的每條數(shù)據(jù)間隔是0.1秒,這個說法是有問題的,真想抽自己,上面的我也不改了,給自己個提醒,具體的說0.103287 ~ 0.106338秒 ,因為之前項目需求時間不長,所以0.1的話沒有發(fā)現(xiàn)問題。
最后上Demo?如果幫到您 請給顆星哦,如果哪里有問題請指出??。