0

我已经为 Windows Phone 7.5 和 Windows Phone 8 开发了一个音乐播放器应用程序。现在我想用各种蓝牙设备听音乐。我可以将它连接到我的手机并听音乐,所以效果很好。但它在某些情况下表现得很奇怪。如果音乐暂停,如果我断开蓝牙,它将在扬声器上恢复。我可以在我的日志中看到它接收到用户操作到UserAction.SEEK我关闭蓝牙时的位置。在这一点上,player.Position变量不知何故变成了 0,所以它变成了 0 并回到了我原来的位置。我不会做任何会导致这种行为的事情。

我要问的是:有没有办法接管控制权或获得任何控制权,以控制AudioPlaybackAgent我使用蓝牙设备做某事时发生的事情。是否发生了任何事件,或者所有这些都由操作系统处理?如果是这样,为什么我的应用程序的行为与股票应用程序不同?另外,为什么我UserAction.SEEK在打开蓝牙设备时会收到一个?

如果我的问题不清楚,请不要犹豫!

4

1 回答 1

2

这是平台的一个已知问题,但在 WP8 GDR2 中已修复。您可以通过检测OnUserAction序列来解决此问题Pause Seek Play。一旦检测到,您可以在下次调用OnPlayerStateChanged时暂停。需要注意的几点:

  • 不能保证在同一个AudioPlayer实例上调用OnUserAction的连续调用,因此任何状态都应该以静态状态存储。
  • 曲目将从扬声器播放片刻,因此您可能需要将音量设置为 0(当然,在记下它之前的值之后)

我已经在GitHub 上发布了一个完整实现的要点我的博客上提供了示例用法和更详细的问题概要。

于 2013-08-18T09:00:50.913 回答