我正在爲iPhone/iPad的遊戲,並且不希望我的背景音樂與音樂的用戶可能已經被打造成干擾。如何檢測其他應用程序是否正在播放背景音頻?
我知道我可以使用MPPlayerController iPod應用程序的狀態,但如何將我的應用程序計算出,如果別的東西,像潘多拉,是播放背景聲音對iOS4的?
我正在爲iPhone/iPad的遊戲,並且不希望我的背景音樂與音樂的用戶可能已經被打造成干擾。如何檢測其他應用程序是否正在播放背景音頻?
我知道我可以使用MPPlayerController iPod應用程序的狀態,但如何將我的應用程序計算出,如果別的東西,像潘多拉,是播放背景聲音對iOS4的?
我終於想通了這一點。我看到了很多例子,但無法讓他們工作。
大多數例子在那裏不指出,對於類似:
UInt32 propertySize, audioIsAlreadyPlaying;
propertySize = sizeof(UInt32);
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying);
工作,正確的架構添加到您的應用程序是AudioToolbox。我一直試圖添加其他音頻框架,總是錯過了那一個。
一旦你添加一個工作框架(並將其導入到有問題的代碼文件),只是測試,看看是否audioIsAlreadyPlaying是0或1。
AudioSessionGetProperty
(如gotung的答覆中提到)已廢棄的iOS 7
的相反,試試這個班輪使用isOtherAudioPlaying:
BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];
適用於iOS 6+。
請注意,你必須在進行此調用之前已初始化您的音頻會議,或者你將有可能獲得一個假陰性。這是一個常見的問題(或者至少是我見過的論壇或在談話中說有這個問題很多人) – 2010-10-22 08:25:27
添加[AVAudioSession sharedInstance]在頂部 – 2013-04-07 14:22:01
AudioSessionGetProperty已在iOS 7中棄用。任何其他選擇? – ZeMoon 2014-01-27 11:29:43