iOS:如何检测音乐是否在任何背景音乐应用中播放?

Tim*_* R. 16 audio background ios

我目前让我的游戏正确处理在内置iPod应用程序中播放音乐时禁用自己的BGM,但它不能检测到Pandora等应用程序何时播放音乐.

目前,在我的applicationDidBecomeActive方法中,我检查[[MPMusicPlayerController iPodMusicPlayer] playbackState]以确定音乐是否正在播放.有什么相当于检查像Pandora这样的应用程序是否在后台播放音频?

Jon*_*der 20

AudioSessionGetProperty (如jake_hetfield的回答中提到的)从iOS 7开始被弃用.

相反,尝试使用isOtherAudioPlaying的这个单线程:

BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];
Run Code Online (Sandbox Code Playgroud)

适用于iOS 6+.

  • Swift 3:`var otherAudioPlaying = AVAudioSession.sharedInstance().isOtherAudioPlaying` (2认同)

jak*_*eld 14

看看这个问题

看起来您可以通过检查属性kAudioSessionProperty_OtherAudioIsPlaying来查看是否正在播放另一个音频:

UInt32 propertySize, audioIsAlreadyPlaying=0;
propertySize = sizeof(UInt32);
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying);
Run Code Online (Sandbox Code Playgroud)

对此的补充可以是询问用户他/她是否想要拥有游戏音乐或已经播放的声音/音乐.