如何检测其他应用是否正在播放背景音频?

got*_*ung 3 iphone audio background objective-c

我正在为iphone/ipad制作游戏,并且不希望我的背景音乐干扰用户可能已经在播放的音乐.

我知道我可以使用MPPlayerController获取iPod应用程序的状态,但是我的应用程序如何判断Pandora等其他东西是否在iOS4上播放背景音频?

got*_*ung 9

我终于想通了.我见过很多例子,但是无法让它们发挥作用.

大多数例子都没有指出:

    UInt32   propertySize, audioIsAlreadyPlaying;

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

要工作,添加到您应用程序的适当框架是AudioToolbox.我一直试图添加其他音频框架,总是错过了那个.

添加该框架工作(并将其导入相关代码文件)后,只需测试audioIsAlreadyPlaying是零还是一个.

  • 请注意,您必须在拨打此电话之前初始化音频会话,否则您可能会收到误报.这是一个常见的陷阱(或者至少我在论坛或对话中见过很多人有这个问题) (5认同)
  • 在iOS 7中不推荐使用AudioSessionGetProperty.还有其他选择吗? (2认同)