gpt4 book ai didi

iphone - 鉴于多任务处理,我如何在 iOS 中处理其他音频播放?

转载 作者:行者123 更新时间:2023-12-01 17:02:50 24 4
gpt4 key购买 nike

Audio Session Cookbook有一节关于“Checking if Other Audio is Playing During App Launch”。

我正在使用 MonoTouch(但请随意给出一个 Objective-C 答案,API 是相同的),所以该文档中的代码看起来像这样:

bool otherAudioPlaying = AudioSession.OtherAudioIsPlaying;
if(otherAudioPlaying)
AudioSession.Category = AudioSessionCategory.AmbientSound;
else
AudioSession.Category = AudioSessionCategory.SoloAmbientSound;

结果是,如果我的应用程序启动时播放 iPod 音乐,iPod 音乐将继续播放并阻止我使用硬件音频解码器(反正我不需要)。如果我的应用程序启动时没有播放 iPod 音乐,我可以使用硬件解码器。

然后我可以使用 otherAudioPlaying 的值来确定是否开始播放我自己的音乐。

现在这在不支持多任务处理的旧操作系统上工作得很好。但是通过多任务处理,用户可以离开我的应用程序(将其置于后台),开始在 iPod 上播放音乐,然后重新进入我的应用程序。然后他们的 iPod 音乐将被静音,我的音乐将再次开始播放。

我希望发生的事情是当我的应用程序返回前台时让 iPod 音乐继续播放 - 即使当我的应用程序在后台播放我自己的音乐(并使用硬件解码器)时也是如此。

(并且,反过来 - 如果我的应用程序在后台没有播放音乐,我想检测它返回时我是否可以开始播放音乐)。

我该怎么做? (最好不要突然切断我的音频,保持通常发生的漂亮淡出。)

编辑:我还应该指出,我在主线程之外完成所有音频工作。

最佳答案

为什么不直接在您的应用委托(delegate)多任务消息中实现它呢?在后台,暂停您的音频(如有必要,存储当前播放位置),并在应用程序恢复焦点时将其重新旋转。

再澄清一点:通过重置音频播放器状态在您的委托(delegate)中响应 applicationDidEnterBackground:,并通过将其设置为现在的方式来响应 applicationWillEnterForeground:。您还可以让设置音频播放的对象通过 NSNotificationCenter 响应 UIApplicationWillEnterBackgroundNotification/UIApplicationWillEnterForegroundNotification,这可能会更容易一些,但代价是从您的应用程序委托(delegate)类中抽象出您的应用程序在后台执行的操作。

关于iphone - 鉴于多任务处理,我如何在 iOS 中处理其他音频播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com