【发布时间】:2010-06-30 19:10:07
【问题描述】:
我正在为 iphone/ipad 制作游戏,并且不希望我的背景音乐干扰用户可能已经在播放的音乐。
我知道我可以使用 MPPlayerController 获取 iPod 应用程序的状态,但我的应用程序如何判断其他东西(例如 Pandora)是否在 iOS4 上播放背景音频?
【问题讨论】:
标签: iphone objective-c audio background
我正在为 iphone/ipad 制作游戏,并且不希望我的背景音乐干扰用户可能已经在播放的音乐。
我知道我可以使用 MPPlayerController 获取 iPod 应用程序的状态,但我的应用程序如何判断其他东西(例如 Pandora)是否在 iOS4 上播放背景音频?
【问题讨论】:
标签: iphone objective-c audio background
我终于想通了。我见过很多例子,但始终无法让它们发挥作用。
那里的大多数示例都没有指出:
UInt32 propertySize, audioIsAlreadyPlaying;
propertySize = sizeof(UInt32);
AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &audioIsAlreadyPlaying);
要工作,添加到您的应用程序的适当框架是 AudioToolbox。我一直在尝试添加其他音频框架,但总是错过那个。
一旦您添加了该框架(并将其导入相关代码文件),只需测试一下 audioIsAlreadyPlaying 是零还是一。
【讨论】:
AudioSessionGetProperty(如 gotung 的回答中所述)自 iOS 7 起已弃用。
试试这个使用isOtherAudioPlaying的单行:
BOOL isOtherAudioPlaying = [[AVAudioSession sharedInstance] isOtherAudioPlaying];
适用于 iOS 6+。
【讨论】: