Windows IoT Core 无头音频应用

Windows IoT Core Headless audio app

我正在尝试在 Raspberry Pi 2 上为 Windows IoT Core 创建无头应用程序,它允许从后台任务播放音频。 通常,我会在 UI 中创建媒体元素,但为此我只有后台任务。

当我使用以下代码播放新音频时

Windows.Media.Playback.BackgroundMediaPlayer.Current.SetUriSource(new System.Uri("http://stream.funradio.sk:8000/fun128.mp3"));

异常 "Access violation message" 被抛出。此外,我尝试创建带有声明音频类型的常规后台任务,但调试器 returns 出现以下异常:

Exception thrown: 'System.Exception' in InternetRadioHeadless.winmd

在 UI 中没有 MediaElement 的情况下如何播放和控制背景音频有任何解决方法吗?

您可能需要将音频声明为您的后台任务类型,如下图所示

后台任务需要处理OnCanceled事件并关闭BackgroundMediaPlayer!

// Event may raise immediately before continung thread excecution so must be at the end
taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);

private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
    try
    {
        // Shutdown media pipeline
        BackgroundMediaPlayer.Shutdown();
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.ToString());
    }

    deferral.Complete(); // signals task completion. 
}