【问题标题】:MediaPlayer vs BackgroundAudioPlayerMediaPlayer 与 BackgroundAudioPlayer
【发布时间】:2013-08-16 21:50:33
【问题描述】:

我正在开发一个 Windows Phone 应用程序,它在后台播放/流式传输音乐。

为此,我尝试同时使用 Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayerMicrosoft.Xna.Framework.Media.MediaPlayer 类。 在这两种情况下,一切都很好,所以我想知道这些方法的优点/缺点是什么,因为现在我无法决定哪个更好。

我唯一不喜欢 BackgroundAudioPlayer 的地方是,我需要为音频代理创建单独的项目,并且担心通过独立存储传输曲目信息。但既然我已经这样做了。这不是问题。

那么这两个类之间还有其他区别吗?

【问题讨论】:

    标签: c# windows-phone-8 windows-phone


    【解决方案1】:

    这取决于您的程序。如果您只想在使用程序时播放背景音乐,您应该使用 MediaPlayer。否则,您必须在任何情况下处理 BackgroundAudioPlayer。这也会惹恼那些在使用您的应用程序时也想听自己的音乐的用户。

    否则,如果您的背景音乐是​​该程序的主要用途,则用户希望启动您的音乐并切换到其他程序。然后它会继续播放,您可以控制音量栏中的音乐。这就是为什么你必须为 BackgroundAudioPlayer 创建一个后台任务。切换到其他程序时,主应用程序将以两种方式停止。

    简而言之:游戏背景音乐不应该在离开游戏后播放(使用 MediaPlayer) - 但我不想一边听音乐库一边看我的音乐播放器计算时间(使用 BackgroundAudioPlayer)。

    【讨论】:

    • 这是有道理的,但 MediaPlayer 在后台运行,(MediaElement 是需要应用程序在前台运行的)。更重要的是,MediaPlayer 就像音乐中心,所以如果我用它开始一首歌曲,然后点击 UVC 的歌曲名称,手机会导航到音乐中心(不是我的应用程序)。
    【解决方案2】:

    我相信 MediaPlayer 要求应用程序位于前台。 BackgroundAudioPlayer 将让用户开始播放曲目,退出您的应用程序,然后音乐将继续播放,并且代理可以响应 UVC。

    确保在前台应用程序和后台音频代理之间进行通信时使用互斥锁。

    【讨论】:

    • 关于前台限制,请阅读我对 Matt 的回答的评论。互斥部分更有趣,因为我找不到一种方法来创建在应用程序和代理项目中都可用的单个实例。所以我只是在IsolatedStorageSettings中写了信息,希望.NET Framework会处理它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多