【问题标题】:UnauthorizedAccessException thrown when accessing MediaLibrary and MediaPlayer访问 MediaLibrary 和 MediaPlayer 时抛出 UnauthorizedAccessException
【发布时间】:2014-07-01 07:54:41
【问题描述】:

我正在尝试为 windows phone 创建一个媒体播放器。我有一个为 Windows Phone 7 创建的早期项目,但是当我为 Windows Phone 8 使用相同的代码时,应用程序崩溃并出现 UnhandledException。我正在使用 Lumia 925 设备。以前的应用程序在商店中,用于 Windows Phone 8 设备。我不知道问题是什么。单击播放库中的歌曲时,我尝试使用按钮创建一个新项目。但同样的事情发生了......应用程序因 UnhandledException 而崩溃。这是代码

    private void btnPlay_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            MediaLibrary lib = new MediaLibrary();
            var songsLib = lib.Songs;
            MediaPlayer.Play(songsLib[0]);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

我已经在清单中添加了所有权限。我已经搜索并找不到解决方案。我的模拟器现在不工作,我无法使用模拟器检查它。但我认为这两个应用程序都在模拟器中工作。在设备中运行时会出现问题。

附:我注意到,当我从商店下载我的原始应用程序并运行它时,当库中没有歌曲时它运行良好。只要手机中有歌曲,应用就会崩溃。

【问题讨论】:

  • 我自己没有做过这样的事情,但是,歌曲是否受到 DRM 保护?也许这导致了异常。

标签: c# windows-phone-8 windows-phone


【解决方案1】:

来自 MSDN http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.frameworkdispatcher.update.aspx

如果您在未实现的应用程序中使用 XNA 框架 Game 类——例如,一个使用 Silverlight 应用程序模型——您必须调用 FrameworkDispatcher.Update 方法自己发送消息 在 XNA Framework 消息队列中。

因此,只需在现有代码中添加一行即可。

MediaLibrary lib = new MediaLibrary();
var songsLib = lib.Songs;
Microsoft.Xna.Framework.FrameworkDispatcher.Update(); // <-- this one
MediaPlayer.Play(songsLib[0]);

为了确定,请检查您是否启用了以下功能。

<Capability Name="ID_CAP_MEDIALIB_AUDIO"/>
<Capability Name="ID_CAP_MEDIALIB_PLAYBACK"/>

【讨论】:

  • 感谢这解决了它。我原来的应用程序的问题是,当我处理专辑封面时,它会消耗更多的内存。 :D 通过设置 DecodePixelHeight 和 DecodePixelWidth 修复它。
猜你喜欢
  • 1970-01-01
  • 2019-05-23
  • 2022-01-21
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多