【问题标题】:How can I play mp3 files stored in my Windows Phone 8.1 solution?如何播放存储在 Windows Phone 8.1 解决方案中的 mp3 文件?
【发布时间】:2014-07-28 16:08:13
【问题描述】:

我的解决方案中存储了许多 mp3 文件

/Resources/mp3Files/

在 Windows Phone 8 中,我可以通过以下方式玩这些游戏:

var name = track.Item1;
var uri = new Uri("/Resources/mp3Files/sound.mp3", UriKind.Relative);

var song = Song.FromUri(name, uri);

FrameworkDispatcher.Update();
MediaPlayer.Play(song);

但是,在 Windows Phone 8.1 中,这不起作用。

要播放存储在解决方案中的 mp3 文件,我需要做什么?

【问题讨论】:

    标签: windows-runtime windows-phone-8.1


    【解决方案1】:

    您需要在 Windows 8.1 中使用 MediaElement:http://blogs.msdn.com/b/johnkenn/archive/2013/12/31/supporting-background-audio-in-your-windows-8-1-app.aspx

    从存储在音乐文件夹中的文件播放音频

    var audioFile = await KnownFolders.MusicLibrary.GetFileAsync("/Resources/mp3Files/sound.mp3");
    
    var stream = await audioFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
    
    mediaplayer.SetSource(stream, audioFile.ContentType);
    

    看一个完整的例子:http://msdn.microsoft.com/library/windows/apps/xaml/jj841209.aspx

    【讨论】:

    • 这看起来很有希望,但它给了我一个UnauthorizedAccessException
    • 嗯。尝试将 mp3 文件放在其他地方,例如在您的音乐库中
    • 我认为我需要为 UnauthorizedAccessException 授予权限,但现在这是另一个问题,System.ArgumentException。我会在周一完成,因为我现在完成了 - 哇哦,啤酒!
    【解决方案2】:

    这是有效的:

    // get folder app is installed to
    var installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
    
    // get folders mp3 files are installed to.
    var resourcesFolder = await installFolder.GetFolderAsync("Resources");
    var mp3FilesFolder = await resourcesFolder.GetFolderAsync("mp3Files");
    
    // open the mp3 file async
    var audioFile = await mp3FilesFolder.GetFileAsync("sound.mp3");
    var stream = await audioFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
    
    // play dat funky music
    MediaElement mediaplayer = new MediaElement();
    mediaplayer.SetSource(stream, audioFile.ContentType);
    mediaplayer.Play();
    

    【讨论】:

    • 您有音乐播放器的参考或示例吗?
    【解决方案3】:

    以下是使用“构建操作”“内容”在解决方案中嵌入的 WP8.0 中打开文件的方法:

    Dim fs As IO.FileStream = IO.File.OpenRead("MyFolder/MyFile.txt")
    

    这是在 WP8.1 Win-RT 中的完成方式:

    Dim fs As System.IO.Stream = Await Windows.ApplicationModel.Package.Current.InstalledLocation.OpenStreamForReadAsync("MyFolder\MyFile.txt")
    

    注意“/”是如何变成“\”的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多