首先轉載幾篇技術文章,以做記錄
iOS開發系列--觸摸事件、手勢識別、搖晃事件、耳機線控 http://www.cnblogs.com/kenshincui/p/3950646.html
iOS架構研究 之 UIResponder 可以接收事件的對象(一)
http://blog.csdn.net/maojudong/article/details/7798138
ios 耳機線控 http://blog.csdn.net/slinloss/article/details/18085145
下邊開始
具體實現上邊轉載的3篇文章中有,可自行參考
關於remoteControlReceivedWithEvent方法不執行的問題:
1.啟用遠程事件接收(使用[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];方法)。
2.對於UI控制項同樣要求必須是第一響應者(對於視圖控制器UIViewController或者應用程式UIApplication對象監聽無此要求)。
3.應用程式必須是當前音訊控制者,也就是在iOS 7中通知欄中當前音頻播放程式必須是我們自己開發程式。
前兩條不多說,主要講第三條,我將上述“ios 耳機線控”這篇文章中的代碼寫在了
AppDelegate方法中,但是卻怎麼也不執行remoteControlReceivedWithEvent方法(註:這個方法只有耳機中間那個鍵才可以觸發),最後加了一段音頻播放代碼,即:
NSString *string = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
//把音頻檔案轉換成url格式
NSURL *url = [NSURL fileURLWithPath:string];
//初始化音頻類 並且添加播放檔案
self.avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
//預播放
[_avAudioPlayer prepareToPlay]; 後,再按耳機的中間鍵時,才觸發 remoteControlReceivedWithEvent方法。
如果有的同學說不想用耳機控制播放音頻,想控制相機拍照,我的方案是可以放一個空的音頻檔案,將remoteControlReceivedWithEvent方法觸發後,再寫入自己自訂的方法。(這裡不想用耳機控制播放音頻,而是實現控制其它自訂的方法,如果大家有別的方案,可以留言共用,共同學習)