以上是我第二次实现功能后的大体的示例。这一次添加了两个功能,一个是播放在线的音频,另一个是下载正在播放的音频并下载到用户的音乐文件夹中。其他的功能并没有改变。下面具体叙述实现的过程。
一、播放在线的音频
刚拿到功能的时候,我觉得这个功能是比较难实现的一个,但做的时候发现这个反而是很简单的。功能主要是由一个TextBox和两个函数实现的。就是将MediaElement的source属性设置为输入到TextBox中的uri。这个功能在微软官方的MediaElement文档中叙述的很详细,也是对播放源的补充:不仅可以选择本地文件,也可以选择网上的音频播放。参照文档基本上改动几个变量名就可以实现功能了。以下是我的代码:
参考文档:https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.MediaElement
二、下载音频到指定文件夹
这个功能实现的时候用了很长时间,个人认为是这次任务最难的一个部分。它涉及到了很多东西,包括如何下载音频,从哪下载音频,如何下载到指定文件夹,如何找到用户的音乐文件等等。关于这个我也参考了很多微软的文档:
https://docs.microsoft.com/en-us/uwp/api/windows.networking.backgroundtransfer.downloadoperation
但是这些并没有解决我的问题,因为这些都只是零件我还需要把他们组合起来。在这期间我还看了另一篇博客:https://www.cnblogs.com/T-ARF/p/5886153.html。这篇文章解决了我大部分的疑问,他让我把之前看过的那些结合了起来,完整的实现了下载音频到指定文件夹这一功能。我的代码如下:
主要是根据Uri的结尾判断是不是音频文件,如果是音频文件,那么在音乐中创建一个NewSong.mp3。然后将Uri中的信息传到Buffer中,再将Buffer的数据写入之前创建的文件中。为图简单我就没有去设计视频文件的下载。在使用的过程中记得将Package.appxmanifest中的音乐库打钩。
附之前的博客和Github地址: