17

我注意到当我的应用程序启动时,我正在听的音乐会自动停止,我注意到当我启动其他一些应用程序时,音乐只是继续......这意味着我不知道如何管理设备中实际播放的音乐,让它播放或停止。

我正在开发一个带有 obj-c 和 cocos2d btw 的游戏,我已经搜索过,但遗憾的是我什么也没找到......所以这是我的问题,我怎样才能让我用我的设备听的音乐继续播放如果我启动应用程序?

编辑:我正在使用 SimpleAudioEngine 在我的应用程序中启动背景音乐和一些音效

4

5 回答 5

22

将此行放在您的应用程序中:didFinishLaunchingWithOptions: AppDelegate 的方法中,或者通常在使用音频播放器之前。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];

根据文档, AVAudioSessionCategoryAmbient 类别是

对于声音播放是非主要的应用程序——也就是说,您的应用程序可以在关闭声音的情况下成功使用。此类别也适用于“随玩”风格的应用程序,例如用户通过 iPod 音频播放的虚拟钢琴。当您使用此类别时,来自其他应用程序的音频会与您的音频混合。您的音频通过屏幕锁定和静音开关(在 iPhone 上称为响铃/静音开关)静音。

请导入AVFoundation/AVFoundation.h

于 2014-05-05T04:42:52.347 回答
9

迅速:

在播放之前输入这一行:

let audioSession = AVAudioSession.sharedInstance()
if audioSession.otherAudioPlaying {
    _ = try? audioSession.setCategory(AVAudioSessionCategoryAmbient, withOptions: AVAudioSessionCategoryOptions.MixWithOthers)
}
于 2017-04-26T15:03:59.083 回答
1

对于希望在本机反应(iOS)中解决此问题的人,我的问题恰恰相反,我们的一些没有音乐的静音视频导致背景声音无缘无故地从其他应用程序暂停。

要解决此问题,还要通过您的 Video 组件将 ignoreSilentSwitch="obey" 道具与 disableFocus 和静音道具一起传递。

于 2020-01-15T18:14:32.503 回答
1

根据文档:

您可以在设置其类别后随时激活音频会话,但通常最好推迟此调用,直到您的应用开始音频播放。推迟通话可确保您不会过早中断可能正在进行的任何其他背景音频。

确保不要setActive在应用程序启动后立即通过其方法直接启动音频会话或通过 AVAudioEngine 或其他播放引擎间接启动音频会话。如果您不希望您的应用程序在启动时打扰其他人,您应该在此阶段仅设置类别。如果您使用的是 AVAudioEngine,请推迟设置引擎或将任何内容连接到引擎,mainMixerNode或者outputNode直到您真正需要开始播放某些内容。

于 2019-04-03T23:27:51.497 回答
-9

当您的应用开始播放音乐时,它将暂停当前正在播放的所有音频。出于显而易见的原因。如果您希望在应用程序启动时继续播放音乐,请不要让应用程序播放任何音乐。

于 2013-09-12T15:33:27.243 回答