在我的应用程序中,我需要在播放自己的声音时暂停并重新启动背景音乐。
iPod 的方法是使用:
[[MPMusicPlayerController iPodMusicPlayer] pause];
和:
[[MPMusicPlayerController iPodMusicPlayer] play];
对于非 iPod 应用程序,这没有影响。
第二次尝试是启用闪避:
UInt32 property = sender.on;
AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(property),&property);
AudioSessionSetActive(property);
也适用于 iPod 音乐播放器,但不适用于 Spotify。
设置kAudioSessionCategory_SoloAmbientSound
确实会停止所有音乐,但不会重新启动它。
最佳答案
控制这一点的方法是使用 AVAudioSession
的 setActive
方法。
当您想要播放声音时,请将 session 设置为事件状态:
[[AVAudioSession sharedInstance] setActive:YES error:nil];
当您停止玩游戏时,请将您的 session 设置为非事件状态,但也使用标记来通知其他人。此标志应导致其他应用程序重新启动(应适用于 iPod 和其他应用程序)。对于带有 AVAudioSession 的 iOS6+,您可以这样做:
[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersonDeactivation error:nil];
iOS 6 之前的版本:
[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation error:nil];
关于objective-c - 从 iOS 应用程序内控制非 iPod 音乐播放器(例如 Spotify),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173056/