2010-10-26 4 views
18

Ich arbeite an einer Windows 7-basierten Anwendungsentwicklung in Silverlight. Ich war nicht in der Lage, eine Möglichkeit zu finden, eine Audio-Datei in Windows 7 Phone programmgesteuert zu spielen. Ich habe es seit den letzten Tagen gegoogelt, aber ich konnte keine Lösung davon bekommen. Es gibt eine Klasse SoundPlayer in C#, aber ich denke, es ist nicht in Windows 7 Phone verfügbar. Kann mir bitte jemand helfen?Eine Audiodatei in Windows 7 Phone abspielen

Antwort

14

Verwenden Sie Xna, um den Sound abzuspielen. Sie können allerdings Referenz Xna von einer Silverlight-Anwendung überqueren, um eine Audiodatei zu spielen, müssen Sie wie folgt vor:

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio 
// ... 
Stream stream = TitleContainer.OpenStream("sounds/bonk.wav"); 
SoundEffect effect = SoundEffect.FromStream(stream); 
FrameworkDispatcher.Update(); 
effect.Play(); 

Alles Gute für Ihre Anwendungsentwicklung!

+0

Wow, das war großartig. Vielen Dank vamana :) – Aqueel

+5

Das stimmt nicht, Silverlight für Windows Phone 7 UNTERSTÜTZT Audio-Wiedergabe. Siehe http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement(VS.95).aspx –

+2

Vorsicht - Sie sollten SoundEffect nur für kurze Tonstücke verwenden, nicht für Hintergrundmusik. Dafür sollten Sie ein MediaElement verwenden –

19

Sie können ein Mediaelement in Ihrer XAML-Ansicht platzieren:

<MediaElement 
    x:Name="sound" 
    Source="sound.wma" 
    AutoPlay="False" /> 

dann in dem Code-Behind:

sound.Play(); 

Unterstützten Formate sind MP3 und WMA.

+1

Dieser eine funktionierte nicht für mich, bis ich AutoPlay gesetzt habe = " Wahr". Nicht sicher warum. Ich setze Namen und Autoplay in XAML, und setze Source und Sound.play() im Code (wie ich es verwende, um mehrere Sounds zu spielen), und es funktioniert nicht mit AutoPlay bei false, aber es funktioniert perfekt damit auf wahr gesetzt. Vielen Dank. –

+1

-1 weil auf diese Weise jede andere mp3-Wiedergabe beendet wird + stoppt auch Musik, wenn sie auf dem Gerät abgespielt wurde. Dadurch wird Ihre WP7-App die Validierung nicht bestehen, wenn Sie nicht ausdrücklich die Erlaubnis des Benutzers erhalten, seine Musik auszuschalten. Ich wurde gerade deswegen abgewiesen. Es gibt derzeit keinen guten Weg, komprimiertes Audio auf der WP7-Plattform zu verwenden. WP7 ist sicherlich ziemlich schwach, wenn es um Medienunterstützung geht. – Jonny

3

Wie wäre es einfach zu verwenden, um einen Einbau-Verhalten?

<Button> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Click"> 
      <eim:PlaySoundAction Source="/Alarm1.wma" Volume="1"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Button> 

Sie benötigen diese beiden Namespaces.

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:eim="clr-namespace:Microsoft.Expression.Interactivity.Media;assembly=Microsoft.Expression.Interactions" 
+0

Sieht aus wie eine Crear-Lösung. Sind Sie uno wenn Sie ein Mediaelement benutzen? –