我正在开发适用于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
答案 0 :(得分:7)
播放背景音频因Windows Runtime和Silverlight(Overview)而异。您试图使用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