iOS監(jiān)聽音量按鍵(長按、短按)

? ? ? 啦啦啦,先給大家拜個晚年,有時間把之前優(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?如果幫到您 請給顆星哦,如果哪里有問題請指出??。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容