2010-06-30 131 views
3

我正在爲iPhone/iPad的遊戲,並且不希望我的背景音樂與音樂的用戶可能已經被打造成干擾。如何檢測其他應用程序是否正在播放背景音頻?

我知道我可以使用MPPlayerController iPod應用程序的狀態,但如何將我的應用程序計算出,如果別的東西,像潘多拉,是播放背景聲音對iOS4的?

回答

9

我終於想通了這一點。我看到了很多例子,但無法讓他們工作。

大多數例子在那裏不指出,對於類似:

UInt32 propertySize, audioIsAlreadyPlaying; 

propertySize = sizeof(UInt32); 
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying); 

工作,正確的架構添加到您的應用程序是AudioToolbox。我一直試圖添加其他音頻框架,總是錯過了那一個。

一旦你添加一個工作框架(並將其導入到有問題的代碼文件),只是測試,看看是否audioIsAlreadyPlaying是0或1。

+5

請注意,你必須在進行此調用之前已初始化您的音頻會議,或者你將有可能獲得一個假陰性。這是一個常見的問題(或者至少是我見過的論壇或在談話中說有這個問題很多人) – 2010-10-22 08:25:27

+1

添加[AVAudioSession sharedInstance]在頂部 – 2013-04-07 14:22:01

+2

AudioSessionGetProperty已在iOS 7中棄用。任何其他選擇? – ZeMoon 2014-01-27 11:29:43

0

AudioSessionGetProperty(如gotung的答覆中提到)已廢棄的iOS 7

的相反,試試這個班輪使用isOtherAudioPlaying

BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying]; 

適用於iOS 6+。

相關問題