最小化或锁定时继续播放 Audiograph UWP 输出

Posted

技术标签:

【中文标题】最小化或锁定时继续播放 Audiograph UWP 输出【英文标题】:Keep still playing Audiograph UWP output when minimized or locked 【发布时间】:2016-02-17 03:44:00 【问题描述】:

使用 audiograph 类配置音频非常容易,但是当我最小化或锁定屏幕时,音频会暂停。有没有解决如何在最小化时保持音频播放?

在我的例子中,我使用了甚至超过 10 个 mp3s 文件同时播放,并且具有随时变化的多种效果。唯一的方法可能是将输出发送到流并使用后台任务的背景媒体获取它,但我没有做任何类似的事情来知道它是否可以工作。

【问题讨论】:

【参考方案1】:

应该有两种解决方案:

    使用BackgroundMediaPlayer,您可以在MSDN 上找到sample 和tutorial。由于BackgroundMediaPlayer只能播放来自隔离存储或远程URI的文件,因此您可以先使用AudioFileOutputNode,将音频图处理后的音频内容保存到文件中,然后将文件加载到BackgroundMediaPlayer的隔离存储中;

    您还可以使用ExtendedExecutionSession,这意味着您可以向操作系统发送请求,以延长在操作系统终止应用程序之前完成待处理任务的时间范围。当然,这并不是真正的后台任务,因为它的目的是让您在进入新的电源状态时获得一些额外的时间来做额外的工作。

【讨论】:

我已经测试了第二个选项并且不适用于 AudioGraph,关于第一个我使用大约 10 个声音同时播放并应用多个效果并且它会发生变化,因此不是静态音频文件,可能是可能的【参考方案2】:

如果您只需要 AudioGraph 而不需要 MediaPlayer,您实际上可以在 BackgroundMediaPlayer 的后台任务中运行 AudioGraph,而无需将其连接到 MediaPlayer。

我使用了background audio sample,即使前台暂停,我的音频图也能正常运行! BackgroundMediaPlayer 使后台任务保持活动状态,作为奖励,您可以使用SendMessageToForeground/Background 方法与主应用程序通信。

【讨论】:

谢谢,我正忙于其他项目,我考虑过,但没有时间。其他后台任务项目可以从主项目中读取mp3吗?我可以将其标记为答案。 你是如何从App运行后台任务winrt的?我测试了 new AudioBackgroundTask().Run(null);并播放 Audiograph 但当我最小化窗口时声音停止 这比那更简单,只需调用一些关于 bgmediaplayer 的东西并开始 Run 方法,谢谢,现在新年快乐,现在我可以完成我的应用程序了!! 非常好听!您不能将 StorageFile 对象直接发送到后台任务,因此您必须发送 Uri 并在后台打开 StorageFile。如果这些 MP3 包含在您的应用程序中,您应该没问题,否则您可能需要使用 Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList 并将令牌传递到后台。 在台式机上运行良好,但在移动设备上它停止了,但我明年会看看:)。

以上是关于最小化或锁定时继续播放 Audiograph UWP 输出的主要内容,如果未能解决你的问题,请参考以下文章

Swift:设备锁定时继续播放声音

AudioGraph 可以播放流吗?

当设备被蓝牙耳机锁定时,AVAsset 无法播放

继续使用 MPMoviePlayerController 播放声音并锁定屏幕?

如何在屏幕锁定或最小化浏览器期间禁用移动设备上的网页音频?

在设备锁定时播放 iPod 库中的音频