AV Foundation系列(二)簡(jiǎn)單的錄音和播放功能

? 最近在學(xué)習(xí)XMPP,實(shí)現(xiàn)IM功能,其中有發(fā)送語(yǔ)音的功能,這就要用到錄音和播放了,這AVFoundation的簡(jiǎn)單的功能,在學(xué)習(xí)XMPP實(shí)現(xiàn)IM功能時(shí)候隨便學(xué)習(xí)一下AVFoundation。

?錄音功能實(shí)現(xiàn),主要實(shí)現(xiàn)在AVAudioRecorderManage中。頭文件如截圖:

?

? AVAudioRecorder初始化:

其他方法的實(shí)現(xiàn):

其中AVAudioRecorder? 的代理由另外一個(gè)類處理(這樣設(shè)計(jì)遵守功能單一原則),該類專門處理AVAudioRecorder的代理事件。

當(dāng)然,這里只是打印一些信息而已,可以根據(jù)需要實(shí)現(xiàn)。

以上就是簡(jiǎn)單的錄音功能。

下面實(shí)現(xiàn)簡(jiǎn)單播放功能,實(shí)現(xiàn)在AVAudioPlayerManange中,AVAudioPlayerManange頭文件如下:

?具體播放功能實(shí)現(xiàn):

? play方法的實(shí)現(xiàn):

stop方法實(shí)現(xiàn):

-(void)playWithPlayFileData:(NSData*)data方法

這里和錄音一樣,我將AVAudioPlayer的代理方法專專門交給另外一個(gè)類實(shí)現(xiàn):

補(bǔ)充

上面說了錄音和播放,其實(shí)還有一個(gè)比較重要的東西忘了說了,就是音頻會(huì)話,音頻會(huì)話在應(yīng)用程序和操作系統(tǒng)的之間扮演著中間的角色,他提供了一種簡(jiǎn)單的實(shí)用的方法使得os知道應(yīng)用程序應(yīng)該如何與ios音頻環(huán)境進(jìn)行交互,我們只需要通過音頻會(huì)話對(duì)應(yīng)用程序的音頻行為進(jìn)行語(yǔ)義上的描述即可,這樣就可以指明應(yīng)用程序的一般音頻行為。

? 我們可以通過音頻會(huì)話分類定制自己的應(yīng)用程序的音頻行為,音頻會(huì)話分類如下圖:


?2供來自書籍截圖

具體指定哪一種音頻會(huì)話,需要根據(jù)應(yīng)用程序的的功能決定,下面是制定音頻會(huì)話的例子:

每個(gè)應(yīng)用程序都有一個(gè)音頻會(huì)話(不管應(yīng)用程序是否使用音頻功能)),它是個(gè)單例,獲取音頻會(huì)話單例,設(shè)置好音頻會(huì)話分類后,激活配置。

配置音頻會(huì)話的后臺(tái)行為,我們需要在后臺(tái)也能播放聲音等,我們需要配置后臺(tái)行為,在plist文件中添加Required background modes ,其中添加一項(xiàng)App plays ?audio or streams audio/video using airplay的,這樣配置,語(yǔ)音播放就就有了后臺(tái)行為,程序進(jìn)入后臺(tái)也能播放,就如你使用 的多米音樂一樣。

打斷問題

其次,在實(shí)際的應(yīng)用中我們的程序可能會(huì)被來的電話打斷,我們的程序還需處理這類的打斷問題,當(dāng)我們的應(yīng)用程序在打斷的時(shí)候,音頻會(huì)話會(huì)發(fā)送通知AVAudioSessionInterruptionNotification,我們需要做的事注冊(cè)該通知,處理打斷事件。處理代碼如下:

線路改變問題

? 當(dāng)線路改變時(shí)音頻會(huì)話會(huì)發(fā)送AVAudioSessionRouteChangeNotification,對(duì)拔除耳線的的處理:

效果如下:

總結(jié):AVFoundation功能很強(qiáng)大啊,這么點(diǎn)代碼就可以實(shí)現(xiàn)了錄音和播放功能,不過AVFoundation還有很多東西,值得學(xué)習(xí)!??!

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

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

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