WP7如何检测音轨何时结束?

时间:2012-11-29 03:33:13

标签: windows-phone-7 events audio agent

我在Windows Phone 7应用程序中使用BackgroundAudioPlayer代理。当跟踪结束时,代理端接收TrackEnded事件,但UI端不接收任何事件。

此外,当我故意将音轨的位置设置为结束时,然后调用Play(),代理端收到TrackEnded事件(因为音轨已经结束),但是UI side在其Stopped处理程序中收到PlayStateChanged。太奇怪了!

如何让UI知道曲目已经结束?通过隔离存储进行通信不是我的最爱!

1 个答案:

答案 0 :(得分:1)

通过研究和一些测试,使用隔离存储作为BackgroundAudioPlayer的后台和前台实例之间的中间人仍然是Windows Phone 7的唯一途径。这里提到了选项(我知道你“意识到了......”

http://blogs.msdn.com/b/wpukcoe/archive/2012/02/10/background-audio-in-windows-phone-7-5-part-2.aspx

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202944(v=vs.105).aspx

https://stackoverflow.com/a/11419680/247257

Peter Torr也证实了这一点:

  

例如,代理可能需要告诉前台“我刚开始预先下载下一首曲目”或“我更新了数据库表,你应该刷新你的状态”。使用Windows Phone OS 7.1无法创建此类通知;最好你可以使用轮询技术对它们进行建模,但这种方法效率低,容易出错。

唯一的好消息是,在同一篇文章中,他为Windows Phone 8提供了一个更可靠的解决方案(使用IPC的命名事件)......

http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/27/using-named-events-to-coordinate-foreground-apps-and-background-agents.aspx

相关问题