2013-08-16 43 views
2

我正在開發一個Windows Phone應用程序,它在後臺播放/流式傳輸音樂。MediaPlayer vs BackgroundAudioPlayer

爲了達到這個目的,我嘗試使用Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayerMicrosoft.Xna.Framework.Media.MediaPlayer類。 在這兩種情況下,一切正常,所以我想知道,這些方法的優點/缺點是什麼,因爲現在我無法確定哪一個更好。

我在BackgroundAudioPlayer中唯一不喜歡的是,我需要爲音頻代理創建單獨的項目,並擔心通過IsolatedStorage傳輸曲目信息。但是因爲我已經做到了。這不是一個問題。

那麼這兩個類別之間還有其他區別嗎?

回答

1

我相信MediaPlayer要求應用程序處於前臺。 BackgroundAudioPlayer將讓用戶開始一個曲目,退出你的應用程序,音樂將繼續播放,代理可以響應UVC。

確保您在前臺應用程序和背景音頻代理之間進行通信時使用互斥鎖。

+0

關於前景限制,請閱讀我對** Matt **的回答的評論。 Mutex部分更有趣,因爲我無法找到創建單個實例的方法,該方法可在App和Agent Projects中使用。所以我只是寫信息在IsolatedStorageSettings,希望.NET框架將照顧它:) – Tonik

+0

http://stackoverflow.com/questions/14381836/easy-way-to-save-game-in-wp7-silverlight/14382853 #14382853 –

2

這取決於你的程序。如果您只想在使用程序時播放背景音樂,則應使用MediaPlayer。否則,你必須在任何情況下照顧BackgroundAudioPlayer。此外,這也會激怒用戶,他們也希望在使用應用程序時聆聽自己的音樂。否則,如果你的背景音樂是​​節目的主要目的,用戶想要開始你的音樂並切換到其他節目。然後繼續播放,您可以控制音量欄中的音樂。這就是爲什麼你必須爲BackgroundAudioPlayer創建後臺任務。切換到其他程序時,主應用程序將以兩種方式停止。

簡而言之:遊戲背景音樂在離開遊戲後不應播放(使用MediaPlayer) - 但我從不想在觀看我的音樂庫(使用BackgroundAudioPlayer)的同時觀看我的音樂播放器計時的時間。

+0

這是有道理的,但MediaPlayer在後臺運行,(MediaElement是需要應用程序在前臺)。 甚至更​​多,MediaPlayer的行爲就像音樂中心,所以如果我用它開始一首歌曲,然後點擊UVC的歌曲名稱,手機導航到音樂中心(不是我的應用程序)。 – Tonik