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