如何在Windows Phone Silverlight 8.1中使用后台媒体播放器

时间:2014-06-03 04:54:10

标签: windows-phone-8 windows-phone-8.1

我正在开发适用于Windows 8.1的Windows Phone应用程序。我需要使用Motion类,隔离存储等功能。由于Windows Phone 8.1不支持这些功能,我使用的是Windows Phone Silverlight 8.1。现在我必须在我的项目中使用BackgroundMediaPlayer,Windows Phone Silverlight 8.1不支持Windows.Media.Playback。有什么方法可以使用所有基本的API,如: -

-Microsoft.Devices.Sensors

-Microsoft.Xna.Framework

-System.IO.IsolatedStorage-System.Windows.Media.Imaging

并使用BackgroundMediaPlayer,Motion类??任何帮助都非常有用。

谢谢,

的Ekta

2 个答案:

答案 0 :(得分:7)

播放背景音频因Windows RuntimeSilverlightOverview)而异。您试图使用MediaPlayer

  

支持的最低手机Windows Phone 8.1 [仅限Windows运行时应用]

仅适用于运行时。

至于在Silverlight 8.1中使用BackgroundAudioPlayer Class,有一个问题 - 它不起作用。这是limitation in Silverlight 8.1

  

Silverlight 8.1不支持AudioPlayerAgent和AudioStreamingAgent类,它们支持Windows Phone 8应用程序的背景音频播放。如果要支持背景音频播放,可以继续使用Windows Phone 8应用程序或创建支持新背景音频API的Windows Phone Store应用程序。

因此,在这种情况下,您必须编写针对WP8.0 Silverlight或WP8.1 Store应用程序的应用程序。

类似的问题是here at MSDN forum

答案 1 :(得分:0)

您可以通过创建新的Windows Runtime Component来实现这一目标。这是Audio任务的入口点。入口点是实现IBackgroundTask的类。这为您提供了一个在启动名为Run。的音频任务时调用的方法。

为了使任务无限期地存在,您需要跟踪IBackgroundTaskInstance上存在的延迟。将延期安置在田地中以便安全保管就足够了。当操作系统取消您的任务时,您需要在此延期上调用完成。

您的任务的裸骨实现的示例应类似于以下内容

public sealed class AudioPlayer : IBackgroundTask
{
    private BackgroundTaskDeferral _deferral;
    public void Run(IBackgroundTaskInstance taskInstance)
    {
        _deferral = taskInstance.GetDeferral();
        taskInstance.Canceled += TaskInstance_Canceled;
    }
    private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
    {
        _deferral.Complete();
    }
}

更多参考,你可以去here