我在Windows Phone 8.1中遇到了Toast通知问题。 (确切版本:8.10.14157.200)。 我有一个应用程序向手机发送Toast通知。 我想用这个吐司通知播放自定义声音。 然而,Windows Phone只播放其默认的通知声音而不是我自己在toast XML中指定的声明。
<?xml version="1.0" encoding="UTF-8"?>
<toast duration="long">
<visual>
<binding template="ToastText02">
<text id="1">Kainat</text>
<text id="2">Hi</text>
</binding>
</visual>
<audio src="/Assets/hodor.wav" />
</toast>
我尝试过以下音频元素但没有成功。
<audio src="hodor.wav" />
<audio src="/hodor.wav" />
<audio src="/Assets/hodor.wav" />
<audio src="ms-appx:///Assets/hodor.wav" />
<audio src="ms-appx:///hodor.wav" />
我也尝试过静音(只是为了验证XML中的音频元素是否有效)
<audio silent="true"/>
这很有效,声音被抑制了。
我在我的项目中添加了hodor.wav以及我的visual studio项目中的Assets文件夹。 还将此wav资源的“复制到输出目录”选项设置为“始终复制”。
我有什么遗失的吗?
答案 0 :(得分:3)
@OliverUlm:MSDN说WP8.1可以使用自定义声音。
根据here中的某个MSDN页面。它说:
&#34;在Windows Phone 8.1上,此属性还可以包含本地音频文件的路径,并带有以下前缀之一:
ms-appx:///
ms-appdata:///
但是,我仍然无法弄清楚如何播放声音。
<强>更新强>
<?xml version="1.0" encoding="UTF-8"?>
<toast>
<visual>
<binding template="ToastText02">
<text id="1">Title</text>
<text id="2">Message</text>
</binding>
</visual>
<audio src="ms-appx:///Audio/Female/0530.mp3" />
</toast>
它对我有用。
答案 1 :(得分:0)
根据MSDN上的文档,WNS中的音频标签不支持音频元素中的完全自定义声音(与WP8.0 GDR3上的WPNS相反)。您只能使用以下字符串来影响播放的通知类型(以及内置于操作系统中的通知)。
答案 2 :(得分:0)
试试这个例子:
代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode("Test1"));
toastTextElements[1].AppendChild(toastXml.CreateTextNode("Test2"));
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
XmlElement audio = toastXml.CreateElement("audio");
string sound = "test1.mp3";
if (sound != null)
audio.SetAttribute("src", "ms-appdata:///local/" + sound);
else
audio.SetAttribute("src", "ms-appx:///sounds/Bell.mp3");
toastNode.AppendChild(audio);
ToastNotifier toastNotifier =
ToastNotificationManager.CreateToastNotifier();
ToastNotification toastNotification = new ToastNotification(toastXml);
toastNotifier.Show(toastNotification);
}
使用xaml: 在XMLFile1.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<toast>
<visual>
<binding template="ToastText02">
<text id="1">Test1</text>
<text id="2">Test2</text>
</binding>
</visual>
<audio src="ms-appdata:///local/test1.mp3"/>
</toast>
在MainPage.xaml.cs中:
private void Button_Click(object sender, RoutedEventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(XDocument.Load("XMLFile1.xml").ToString());
ToastNotifier toastNotifier =
ToastNotificationManager.CreateToastNotifier();
ToastNotification toastNotification = new ToastNotification(xmldoc);
toastNotifier.Show(toastNotification);
}