【发布时间】:2015-06-27 15:25:35
【问题描述】:
在 iOS 中,我试图在播放一些音效时避开音乐应用的音乐。如果您不知道,“闪避”只是意味着在播放我的声音之前音乐音量降低了一点,然后声音播放,然后音乐音量恢复到初始音量。
对于闪避,我将AVAudioSession 类别设置为AVAudioSessionCategoryAmbient,并使用选项AVAudioSessionCategoryOptionDuckOthers,然后激活/停用会话(显然,在中间播放声音)。效果很好,但是音量的变化似乎是在与调用相同的线程中完成的,并且在修改音量时应用会挂起。
如果你想复制这种行为,我认为最快的方法是启动一个新的 SpriteKit 项目,它会为你提供示例,轮换项目。然后在touchesBegan:withEvent方法中加入如下代码:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions: AVAudioSessionCategoryOptionDuckOthers error: nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
[[AVAudioSession sharedInstance] setActive:NO error:nil];
接下来在 iOS 设备上运行该应用程序,在音乐应用程序中放一些音乐,然后触摸屏幕来创建飞船并躲避音乐。您会听到闪避的声音,但也会在屏幕上看到船只冻结。
这正常吗?在进行闪避时避免应用程序冻结的最简单方法是什么?
顺便说一句,我在 iOS 8.1 上使用 iPhone 5S。另外,我在 Unity3D 插件中使用它。如何从 Unity 中避开 Music 应用?
【问题讨论】:
-
同样的问题。你有没有找到解决这个问题的方法?
标签: ios objective-c audio unity3d avaudiosession