2014-08-31 95 views
4

我在Windows Phone 8.1中遇到了一個吐司通知問題。 (確切版本:8.10.14157.200)。 我有一個應用程序向手機發送Toast通知。 我想用這個吐司通知播放自定義聲音。 但是,Windows Phone只是播放其默認通知聲音,而不是我自己的,我在吐司XML中指定。無法播放Windows Phone 8.1中的自定義音頻wav文件Toast通知

<?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資源的「複製到輸出目錄」選項設置爲「始終複製」。

有什麼我失蹤?

+1

你有沒有得到這個工作?如果是這樣,怎麼樣? – DaveDev 2014-09-18 12:23:41

+0

我正面臨同樣的問題。在這裏任何幫助傢伙? – AbsoluteSith 2015-02-10 13:56:14

+0

這是我對這個問題的回答:http://stackoverflow.com/questions/33365202/windows-phone-8-1-toast-notification-not-playing-custom-sound/34186433#34186433如果有人正面臨這個問題同樣的問題 – ludesign 2015-12-09 18:41:06

回答

0

根據MSDN的文檔,WNS中的音頻標籤不支持音頻元素中的完全自定義聲音(與WP8.0 GDR3上的WPNS相反)。您只能使用以下字符串來影響播放什麼類型的通知(以及哪些內置於OS中)。

  • MS-winsoundevent:Notification.Default
  • MS-winsoundevent:Notification.IM
  • MS-winsoundevent:Notification.Mail
  • MS-winsoundevent:Notification.Reminder
  • MS-winsoundevent:通知.MS
  • ms-winsoundevent:Notification.Looping.Alarm
  • ms-winsoundevent:Notification.Looping.Alarm2
  • MS-winsoundevent:Notification.Looping.Alarm3
  • MS-winsoundevent:Notification.Looping.Alarm4
  • MS-winsoundevent:Notification.Looping.Alarm5
  • MS-winsoundevent:Notification.Looping.Alarm6
  • MS-winsoundevent:Notification.Looping.Alarm7
  • MS-winsoundevent:Notification.Looping.Alarm8
  • MS-winsoundevent:Notification.Looping.Alarm9
  • MS-winsoundevent:Notification.Looping.Alarm10
  • MS-winsoundevent:Notification.Looping.Call
  • MS-winsoundevent:Notification.Looping.Call2
  • MS-winsoundevent:Notification.Looping.Call3
  • MS-winsoundevent:Notification.Looping.Call4
  • ms-winsoundevent:Notification.Looping。Call5
  • MS-winsoundevent:Notification.Looping.Call6
  • MS-winsoundevent:Notification.Looping.Call7
  • MS-winsoundevent:Notification.Looping.Call8
  • MS-winsoundevent:Notification.Looping.Call9
  • MS-winsoundevent:Notification.Looping.Call10
3

@OliverUlm:MSDN說WP8.1可以使用自定義的聲音。

根據MSDN頁面here之一。它說:

「在Windows Phone 8.1,這個屬性還可以包含指向本地音頻文件,具有以下前綴之一:

ms-appx:/// 
ms-appdata:/// 

但是,我還沒有想出如何播放聲音

UPDATE:。

<?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> 

這對我的作品

+0

你能幫助我如何在C#中做到這一點?我在使用C#時感到有些困惑。謝謝! – 2015-08-06 08:53:19

+0

@KishorBikramOli你能詳細說明你在C#中做什麼嗎? Windows Phone Toast Notification需要一個XML對象才能工作。 – 2015-08-06 14:27:40

+0

我不想使用XML。我正在尋找這樣的東西。我找到了解決方案。 XmlElement audio = toastXml.CreateElement(「audio」); audio.SetAttribute(「src」,「ms-appx:/// Sound \\ Alarm.mp3」); toastNode.AppendChild(audio); – 2015-08-07 10:16:07

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); 
    } 
相關問題