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

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+。

【讨论】:

以上是关于如何检测其他应用程序是不是正在播放背景音频?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVAudioSession 快速检测其他音频的属性

设置 MPNowPlayingInfoCenter 与其他背景音频播放

如何检测音频当前是不是正在 Android 手机扬声器上播放?

如何检测音频是不是无法静音?

如何恢复ios中的音频?

读取其他应用在后台播放的音频输出