我注意到,当我的应用程序启动时,我正在收听的音乐会自动停止,我注意到当我启动其他应用程序时,音乐会继续...这意味着我不知道如何管理设备中的实际播放音乐,让它播放或停止。
我正在用obj-c和cocos2d btw开发一款游戏,我搜索过但遗憾的是我什么都没找到......所以这是我的问题,我怎么能让我用我的设备听的音乐继续播放如果我启动应用程序?
编辑:我正在使用SimpleAudioEngine在我的应用程序中启动背景音乐和一些声音效果
将此行放在您的应用程序中:didFinishLaunchingWithOptions:AppDelegate的方法,或者在使用音频播放器之前。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];
根据文档,AVAudioSessionCategoryAmbient类别是
对于声音播放非主要的应用程序 - 也就是说,您的应用程序可以在声音关闭时成功使用。此类别也适用于“播放”风格的应用程序,例如用户在iPod音频上播放的虚拟钢琴。使用此类别时,来自其他应用程序的音频会与您的音频混合。屏幕锁定和静音开关(在iPhone上称为Ring / Silent开关)可以使您的音频静音。
请导入AVFoundation/AVFoundation.h
迅速:
在玩之前输入这一行:
let audioSession = AVAudioSession.sharedInstance()
if audioSession.otherAudioPlaying {
_ = try? audioSession.setCategory(AVAudioSessionCategoryAmbient, withOptions: AVAudioSessionCategoryOptions.MixWithOthers)
}
根据文件:
您可以在设置其类别后随时激活音频会话,但通常最好将此呼叫推迟到您的应用开始音频播放。推迟呼叫可确保您不会过早地中断可能正在进行的任何其他背景音频。
确保不要在应用程序启动后立即通过其setActive
方法直接启动音频会话,也不要通过AVAudioEngine或其他播放引擎间接启动音频会话。如果您不希望应用在启动时中断其他应用,则应仅在此阶段设置类别。如果您正在使用AVAudioEngine,请推迟设置引擎或将任何内容连接到引擎的mainMixerNode
或outputNode
,直到您确实需要开始播放某些内容。
当您的应用开始播放音乐时,它会暂停当前播放的所有音频。原因很明显。如果您希望在应用启动时继续播放音乐,请不要让应用播放任何音乐。