简体   繁体   English

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

[英]Windows Phone 8.1 Load Sound Issue with StreamResourceInfo

I am converting an app from WP7 to WP8.1 The codes for WP7 no longer works for WP8.1 我正在将应用程序从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();

StreamResourceInfo does not exists for WP8.1 anymore. WP8.1不再存在StreamResourceInfo。 Anyone know how I can re-write this line to make it work for WP8.1? 任何人都知道如何重新编写此行以使其适用于WP8.1吗?

Updated Code. 更新的代码。

Here's the new code below, but now it seems the sfxLeft and sfxRight are always NULL. 这是下面的新代码,但现在看来sfxLeft和sfxRight始终为NULL。 I thought the below code would set sfxLeft and sfxRight, but it's still 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();
    }

To play sound using XNA Framework in Windows Phone 8.1 Silverlight App 在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();

Or you can use MediaElement for both RT and Silverlight but they are in different namespace, 或者,您可以将MediaElement用于RT和Silverlight,但它们位于不同的命名空间中,

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

Thanks. 谢谢。 I figured it out by using the media element in XAML and then add codes in c# to play it. 我通过使用XAML中的media元素弄清楚了,然后在c#中添加代码来播放它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM