[英]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之间提供通信-ToUI和ToPlayer (当然,如果需要的话)。
您可能还需要配置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.