[iOS] iphone檢測耳機插入/拔出

來源:互聯網
上載者:User

開發過程中錄音和播放這塊碰到了一些問題,麻煩的主要有三個: 檢測是否有聲音輸入裝置 當有多個聲音輸出裝置時,指定聲音輸出裝置 檢測耳機的插入和拔出

第一個問題,對於iTouch和iPad等本身不帶麥克風的裝置,需要檢查是否插入了帶錄音功能的耳機;對於iphone,由於其本身已近內建麥克風,所以相對容易。第二個問題,當在本身帶有外放的裝置上插入耳機等輸出裝置時,就出現了多個輸出裝置,需要實現在程式中指定將聲音輸出到哪裡。第三個問題,插入/拔出耳機必然引起聲音輸出裝置的變化,而如果是在iTouch和iPad上插入/拔出了帶麥克風的耳機,則必然引起聲音輸入裝置的變化。

1. 檢測聲音輸入裝置

[plain]  view plain copy print ? - (BOOL)hasMicphone {       return [[AVAudioSession sharedInstance] inputIsAvailable];   }   2. 檢測聲音輸出裝置
對於輸出裝置的檢測,我們只考慮了2個情況,一種是裝置自身的外放(iTouch/iPad/iPhone都有),一種是當前是否插入了帶外放的耳機。iOS已經提供了相關方法用於擷取當前的所有聲音裝置,我們只需要檢查在這些裝置中是否存在我們所關注的那幾個就可以了。
擷取當前所有聲音裝置:
[plain]  view plain copy print ? CFStringRef route;   UInt32 propertySize = sizeof(CFStringRef);   AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &route);   在iOS上所有可能的聲音裝置包括:

[cpp]  view plain copy print ? /* Known values of route:  * "Headset"  * "Headphone"  * "Speaker"  * "SpeakerAndMicrophone"  * "HeadphonesAndMicrophone"  * "HeadsetInOut"  * "ReceiverAndMicrophone" 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.