繁体   English   中英

在Windows Phone 8.1背景中播放声音

[英]Play sound in windows phone 8.1 background

我正在编写需要背景音乐的应用程序。 以下是我在搜索不同论坛后制作的代码。

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();
    }
}  

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

几乎没有什么地方出错(我想这不是您的全部代码)。 如果您要遵循Bacground Audio Overview,那将是最好的选择。

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

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

您的应用程序首次在您的应用程序访问BackgroundMediaPlayer时启动后台任务。当前在前台应用程序代码中。

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

您可能还需要配置SMTP ,以便您的AudioPlayer对单击VolumeControl时显示的按钮做出反应。

为了帮助您理解BackgroundMediaPlayer的正确用法,请看一下示例,您的想法将变得清晰。您必须集成另一个项目的引用以使用背景Audio。只需看一下即可。希望对您有所帮助。

万一有人偶然发现,Win Phone 8.1上的任何IBackgroundTask都必须包含在WinRT组件项目类型中,而不是包含在类库或PCL中。

MediaPlayer exe即将退出,如果您给它提供dll,您将被拔出头发。

这样,并确保您的appxmanifest文件中的入口点路径正确,并且您应该一切顺利。 只需在您的Run()方法中放置一个断点来进行验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM