2012-12-19 70 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