在windows phone 8.1后台播放声音

本文关键字:后台 播放声音 windows phone | 更新日期: 2023-09-27 18:05:42

我正在写一个需要背景音乐的应用程序。下面是我的代码,我做了搜索不同的论坛。

class AudioPlayer : IBackgroundTask
{
    private BackgroundTaskDeferral _deferral;
    public void Run(IBackgroundTaskInstance taskInstance)
    {
        _deferral = taskInstance.GetDeferral();
        taskInstance.Canceled += TaskInstance_Canceled;
    }
    private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
    {
        _deferral.Complete();
    }
    //===========================================================================================================
    public void startTick()
    {
        BackgroundMediaPlayer.Current.SetUriSource(new Uri("ms-appx:///Audio/clock.wav"));
        BackgroundMediaPlayer.Current.Play();
    }
}  

问题是它不起作用。模拟器没有声音。请帮助!

在windows phone 8.1后台播放声音

有几个地方可能出了问题(我猜不是所有的代码都出了问题)。最好的将在这里,如果你遵循背景音频概述。

还请检查您是否添加了所需的声明(我怀疑这可能是这里的问题):转到您的Package.appxmanifest文件,打开声明然后您应该添加Background TasksAudio(作为支持的任务类型)并指定其入口点(可能是yournamespace.AudioPlayer)。

还要记住,正如MSDN(上面的链接)所说:

你的后台任务在你的应用程序第一次访问BackgroundMediaPlayer时启动。当前在前台应用程序代码。

我建议在Run方法上设置一个断点,你应该看看AudioPlayer是否已经启动。还记得提供UI和AudioPalyer之间的通信- ToUI和ToPlayer(当然如果你需要的话)。

你可能还想配置你的SMTP,这样你的AudioPlayer会对那些按钮作出反应,当你点击VolumeControl。

为了帮助理解BackgroundMediaPlayer的正确用法,请看看这个示例,您的想法将得到澄清。你必须集成另一个项目的参考使用背景音频。看看就知道了。

如果有人偶然发现这一点,任何IBackgroundTask在Win Phone 8.1需要包含在一个WinRT组件项目类型和不是在类库或PCL。

MediaPlayer exe会退出,如果你给它一个dll,你将会拔你的头发。

确保你的入口点路径在你的appxmanifest文件中是正确的,你就可以开始了。只需在Run()方法中放置一个断点来验证。