我正在使用Toast,我成功创建了在特定时间后出现的预定吐司。但是我有音频问题,我的目标是在循环unitl中用户按下按钮发出声音,但是当我将Loop参数设置为true时,我的吐司不起作用。我的系统是Windows 10 build 10240。
ToastContent content = new ToastContent()
{
Duration = ToastDuration.Long,
Visual = new ToastVisual()
{
TitleText = new ToastText()
{
Text = "Alarm"
},
BodyTextLine1 = new ToastText()
{
Text = "Wake up"
}
},
Scenario = ToastScenario.Reminder,
Audio = new ToastAudio()
{
Src = new Uri("ms-winsoundevent:Notification.Looping.Alarm"),
Loop = true,
Silent = false
},
Actions = new ToastActionsCustom()
{
Buttons =
{
new ToastButtonSnooze(),
new ToastButtonDismiss()
}
}
};
ScheduledToastNotification toast = new ScheduledToastNotification(content.GetXml(), dueTime);
ToastNotificationManager.CreateToastNotifier().AddToSchedule(toast);
修改 当我把吐司写成xml时循环工作。这就是解决方案
Xml文件
<?xml version="1.0" encoding="utf-8" ?>
<toast duration="long" scenario="alarm">
<visual>
<binding template="ToastGeneric" >
<text> Daily .Net Tips </text>
</binding>
</visual>
<audio src="ms-winsoundevent:Notification.Looping.Alarm" loop="true">
</audio>
<actions>
<action activationType="system" arguments="snooze" content=""/>
<action activationType="system" arguments="dismiss" content=""/>
</actions>
</toast>
C#代码
string xmlString = File.ReadAllText(@"ToastTemplate\AlarmTemplate.xml");
Windows.Data.Xml.Dom.XmlDocument toastDOM = new Windows.Data.Xml.Dom.XmlDocument();
toastDOM.LoadXml(xmlString);
var toastNotifier = ToastNotificationManager.CreateToastNotifier();
toastNotifier.Show(new ToastNotification(toastDOM));
答案 0 :(得分:2)
这是来自Microsoft的Notifications团队的Andrew。
由于您使用Scenario = Alarm,不需要设置持续时间或循环。
警报场景将自动保持用户屏幕上的祝酒词直到他们采取行动,因此设置持续时间=长是没用的。
此外,警报方案将自动循环音频,因此设置Loop = true是无用的。
以下是您的更新代码应该是什么样的(请确保您将方案设置为闹钟,我注意到您的原始代码中有提醒)...
ToastContent content = new ToastContent()
{
Visual = new ToastVisual()
{
TitleText = new ToastText()
{
Text = "Alarm"
},
BodyTextLine1 = new ToastText()
{
Text = "Wake up"
}
},
Scenario = ToastScenario.Alarm,
Audio = new ToastAudio()
{
Src = new Uri("ms-winsoundevent:Notification.Looping.Alarm")
},
Actions = new ToastActionsCustom()
{
Buttons =
{
new ToastButtonSnooze(),
new ToastButtonDismiss()
}
}
};
至于为什么吐司通过NotificationsExtensions而不是原始XML破解...看起来你在NotificationsExtensions中发现了一个错误。
我今天更新了NotificationsExtensions.Win10以解决此错误,版本10586.0.2有修复(如果您仍然使用10240版本,则版本为10240.0.8)。如果您有点好奇,修复的详细信息在this code commit。