Windows Phone 8.1使用StreamResourceInfo加载声音问题

时间:2015-08-20 03:24:48

标签: c# .net visual-studio windows-phone-7 windows-phone-8

我正在将应用程序从WP7转换为WP8.1 WP7的代码不再适用于WP8.1

        sfxLeft = new MediaElement();
        sfxRight = new MediaElement();
        StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri(wav, UriKind.Relative));

        var sfx = SoundEffect.FromStream(streamInfo.Stream);

        sfxLeft = sfx.CreateInstance();
        sfxRight = sfx.CreateInstance();

WP8.1不再存在StreamResourceInfo。任何人都知道如何重新编写这一行以使其适用于WP8.1?

更新了代码。

这里是下面的新代码,但现在看来sfxLeft和sfxRight总是为NULL。我认为下面的代码会设置sfxLeft和sfxRight,但它仍然是NULL。

        protected override void OnNavigatedTo(NavigationEventArgs e)
    {

        test();

    }

    async private Task test()
    {
        Uri wav = new Uri("ms-appx:///Assets/eye_poke.wav", UriKind.RelativeOrAbsolute);

        StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(wav);

        stream = await file.OpenStreamForReadAsync();

        sfxLeft = SoundEffect.FromStream(stream).CreateInstance();
        sfxRight = SoundEffect.FromStream(stream).CreateInstance();
    }

2 个答案:

答案 0 :(得分:0)

在Windows Phone 8.1 Silverlight应用程序中使用XNA Framework播放声音

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(wav);
Stream stream = await file.OpenStreamForReadAsync();
SoundEffect Sound1 = SoundEffect.FromStream(stream);
FrameworkDispatcher.Update();
Sound1.Play();

或者您可以将MediaElement用于RT和Silverlight,但它们位于不同的命名空间中,

MediaElement mediaElement1 = new MediaElement();
mediaElement1.Source = wav
mediaElement1.AutoPlay = false;
rootGrid.Children.Add(mediaElement1)

答案 1 :(得分:0)

感谢。我通过在XAML中使用media元素然后在c#中添加代码来解决它。