使用蓝牙耳机控制WP7和WP8应用程序

时间:2012-12-19 13:46:57

标签: c# windows-phone-7 audio bluetooth windows-phone-8

我开发了适用于Windows Phone 7.5和Windows Phone 8的音乐播放器应用。现在我想用各种蓝牙设备收听音乐。我可以将它连接到我的手机并听音乐,这样就可以了。但它在某些情况下表现得很奇怪。如果音乐暂停,如果我断开蓝牙,它将在扬声器上恢复。我可以在我的日志中看到它收到用户操作UserAction.SEEK到我关闭蓝牙时的位置。此时,player.Position变量以某种方式变为0,因此它变为0并返回到我所在的位置。而且我不做任何会导致这种行为的事情。

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

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

1 个答案:

答案 0 :(得分:2)

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

  • 不保证在 AudioPlayer 的同一个实例上调用 OnUserAction 的连续调用,因此任何状态都应该以静态存储。
  • 音轨将在短时间内从扬声器播放,因此您可能希望将音量设置为0(当然,在记录之前的值之后)

我发布了Gist to GitHub with a full implementation。示例用法和问题的详细纲要是available on my blog