如何检测其他应用程序是不是正在播放背景音频?
Posted
技术标签:
【中文标题】如何检测其他应用程序是不是正在播放背景音频?【英文标题】:How do I detect if other apps are playing background audio?如何检测其他应用程序是否正在播放背景音频? 【发布时间】:2010-06-30 19:10:07 【问题描述】:我正在为 iphone/ipad 制作游戏,并且不希望我的背景音乐干扰用户可能已经在播放的音乐。
我知道我可以使用 MPPlayerController 获取 iPod 应用程序的状态,但我的应用程序如何判断其他东西(例如 Pandora)是否在 ios4 上播放背景音频?
【问题讨论】:
【参考方案1】:我终于想通了。我见过很多例子,但始终无法让它们发挥作用。
那里的大多数示例都没有指出:
UInt32 propertySize, audioIsAlreadyPlaying;
propertySize = sizeof(UInt32);
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying);
要工作,添加到您的应用程序的适当框架是 AudioToolbox。我一直在尝试添加其他音频框架,但总是错过那个。
一旦您添加了该框架(并将其导入相关代码文件),只需测试一下 audioIsAlreadyPlaying 是零还是一。
【讨论】:
请注意,您必须在拨打此电话之前初始化您的音频会话,否则您可能会得到误报。这是一个常见的问题(或者至少我在论坛或对话中看到很多人遇到这个问题) 添加 [AVAudioSession sharedInstance];在顶部 AudioSessionGetProperty 在 iOS 7 中已被弃用。还有其他选择吗?【参考方案2】:AudioSessionGetProperty
(如 gotung 的回答中所述)自 iOS 7 起已弃用。
试试这个使用isOtherAudioPlaying的单行:
BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];
适用于 iOS 6+。
【讨论】:
以上是关于如何检测其他应用程序是不是正在播放背景音频?的主要内容,如果未能解决你的问题,请参考以下文章
设置 MPNowPlayingInfoCenter 与其他背景音频播放