【问题标题】:Preinitialize BackgroundAudioPlayer in WP7?在 WP7 中预初始化 BackgroundAudioPlayer?
【发布时间】:2011-09-01 10:31:33
【问题描述】:

当我在我的 Windows Phone 7 应用程序中使用 BackgroundAudioPlayer 时,在我第一次想要播放歌曲时加载需要很长时间。有没有办法在播放第一首曲目之前预初始化 BackgroundAudioPlayer,这样当我开始播放时,它就开始了?我已经用谷歌搜索了它,但没有运气。我只是在使用 BackgroundAudioPlayer.Instance 时,例如想要播放、暂停、停止等音轨。我还能做些什么来解决这个问题吗?

【问题讨论】:

  • 术语挑选:没有预初始化、重新初始化等,只有“初始化”。
  • 我知道,但我想强调一个事实,即我想在它自动初始化之前对其进行初始化,这为时已晚。据我了解,它会在需要时进行初始化,对吗?我如何在不调用 stop、pause 等的情况下做到这一点?
  • 仍在挑选:“显式初始化”怎么样?请原谅我对这个问题无能为力。

标签: c# windows-phone-7 windows-phone windows-phone-7.1 background-audio


【解决方案1】:

您可以在您的 App 构造函数中调用BackgroundAudioPlayer.Instance.Stop();,然后在您的AudioPlayerAgent 实现中丢弃OnUserAction 方法中第一次出现的UserAction.Stop

【讨论】:

  • 我试过了。使用 BackgroundAudioPlayer.Instance.Stop(),它似乎加载了 18 个程序集中的 13 个,所以这是一个很好的改进。但我仍然想在点击播放之前加载剩余的 5 个。
  • 是程序集加载导致问题吗?如果是这样,您可以使用 Assembly.Load() 将它们预加载到您的应用中。
  • 这似乎也不起作用。我想“提升”的打印行看起来像这样的“后台任务”(托管):加载了“mscorlib.dll”。在 UI 任务中加载了相同的程序集,那么如何显式加载在后台任务上运行的程序集?
  • @greve 第一次出现是什么意思?如果用户使用你的应用播放音乐,然后退出,然后又回到你的应用怎么办?
【解决方案2】:

这可能是从一个简单的角度来看,但你能不能不调用 play 然后立即暂停它直到你准备好播放?我对控件不是很熟悉,但看这里:

http://msdn.microsoft.com/en-us/library/microsoft.phone.backgroundaudio.backgroundaudioplayer_members(v=vs.92).aspx

您可以预先检查 BufferingProgress 和 PlayerState 以检查曲目何时可以播放,然后暂停直到您准备好继续。

这有点蛮力,但可能会奏效。值得一试吗?

【讨论】:

  • 将尝试一些您推荐的 if 检查以进一步提升它。谢谢!更多,以及其他非暴力方法受到高度赞赏!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多