2012-12-19 69 views
0

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

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

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

回答

2

这是该平台的一个已知问题,但在WP8 GDR2中已修复。您可以通过检测OnUserAction序列PauseSeekPlay来解决问题。一旦检测到,您可以暂停下一次拨打OnPlayerStateChanged。有几件事情需要注意的:

  • 连续通话OnUserAction不能保证对AudioPlayer相同的实例被调用,所以任何国家应存放在静止状态。
  • 轨道将从扬声器播放的一个短暂的瞬间,所以你可能要在音量设置为0(使得它的记后的前值,当然)

我已经发布了Gist to GitHub with a full implementation。示例用法和更详细的问题简介是available on my blog