? 最近在學習XMPP漠趁,實現(xiàn)IM功能扁凛,其中有發(fā)送語音的功能,這就要用到錄音和播放了闯传,這AVFoundation的簡單的功能谨朝,在學習XMPP實現(xiàn)IM功能時候隨便學習一下AVFoundation。
?錄音功能實現(xiàn)甥绿,主要實現(xiàn)在AVAudioRecorderManage中字币。頭文件如截圖:
? AVAudioRecorder初始化:
其他方法的實現(xiàn):
其中AVAudioRecorder? 的代理由另外一個類處理(這樣設計遵守功能單一原則),該類專門處理AVAudioRecorder的代理事件共缕。
當然洗出,這里只是打印一些信息而已,可以根據(jù)需要實現(xiàn)图谷。
以上就是簡單的錄音功能翩活。
下面實現(xiàn)簡單播放功能,實現(xiàn)在AVAudioPlayerManange中便贵,AVAudioPlayerManange頭文件如下:
?具體播放功能實現(xiàn):
? play方法的實現(xiàn):
stop方法實現(xiàn):
-(void)playWithPlayFileData:(NSData*)data方法
這里和錄音一樣菠镇,我將AVAudioPlayer的代理方法專專門交給另外一個類實現(xiàn):
補充
上面說了錄音和播放,其實還有一個比較重要的東西忘了說了承璃,就是音頻會話利耍,音頻會話在應用程序和操作系統(tǒng)的之間扮演著中間的角色,他提供了一種簡單的實用的方法使得os知道應用程序應該如何與ios音頻環(huán)境進行交互,我們只需要通過音頻會話對應用程序的音頻行為進行語義上的描述即可堂竟,這樣就可以指明應用程序的一般音頻行為。
? 我們可以通過音頻會話分類定制自己的應用程序的音頻行為玻佩,音頻會話分類如下圖:
具體指定哪一種音頻會話出嘹,需要根據(jù)應用程序的的功能決定,下面是制定音頻會話的例子:
每個應用程序都有一個音頻會話(不管應用程序是否使用音頻功能)),它是個單例咬崔,獲取音頻會話單例税稼,設置好音頻會話分類后,激活配置垮斯。
配置音頻會話的后臺行為郎仆,我們需要在后臺也能播放聲音等,我們需要配置后臺行為兜蠕,在plist文件中添加Required background modes 扰肌,其中添加一項App plays ?audio or streams audio/video using airplay的,這樣配置熊杨,語音播放就就有了后臺行為曙旭,程序進入后臺也能播放,就如你使用 的多米音樂一樣晶府。
打斷問題
其次桂躏,在實際的應用中我們的程序可能會被來的電話打斷,我們的程序還需處理這類的打斷問題川陆,當我們的應用程序在打斷的時候剂习,音頻會話會發(fā)送通知AVAudioSessionInterruptionNotification,我們需要做的事注冊該通知,處理打斷事件较沪。處理代碼如下:
線路改變問題
? 當線路改變時音頻會話會發(fā)送AVAudioSessionRouteChangeNotification鳞绕,對拔除耳線的的處理:
效果如下:
總結:AVFoundation功能很強大啊,這么點代碼就可以實現(xiàn)了錄音和播放功能尸曼,不過AVFoundation還有很多東西猾昆,值得學習!B獍垂蜗!