NAIVE 播放器的实现(二)

    在上次一顿胡搞瞎搞之后,我就把那个sh*t一样的播放列表丢弃在一边了,结果就一直拖到这次的NAIVE播放器实现的第二部分。

    这个任务的要求是允许播放器播放一个在线的歌曲并提供下载播放的功能,首先我调整了一下UI,让整个界面虽然变丑了但是有足够的位置放下一个TextBox和两个Button了。其中一个Button的功能是点击之后直接播放,而另一个Button的功能则是点击后下载并且播放,最后TextBox中存放用户输入的资源所在的URL。

    首先完成比较简单的点击按钮后直接播放的功能,我首先想到的就是直接将TextBox中的文本直接作为参数传入SetSource方法中作为第一个参数,但是却出现了错误,之后通过查阅文档之后发现SetSource方法接受的第一个参数必须是一个流,看来我还需要将这个URL转化为一个流文件,之后我查阅了URI的部分,之后将这个URL转化为了URI的一个实例,之后将它传入SetSource作为第一个参数,结果一运行,OK!搞定了。

    之后我就动了顺便让我sh*t一样的播放列表也支持在线播放的心思,结果只努力了不到五分钟,就放弃了。。。还是之前的问题,因为数据绑定的失效让这个列表的内容被完全写死了,导致如果不是在文件夹中选中这个文件的话,没有办法将这个文件的名字添加到列表当中去,如果要是支持这个功能,势必要对之前的代码整个进行重构,想了想。。。算了。。。就这样吧,一边这样想着的我一边又开始了第二个功能的开发。

    对于下载文件,首先我查阅了文档中后台传输这一部分的描述,之后在后台传输的部分有一句,如果你如果你下载的是可能快速完成的小型资源,应该使用HttpClient API 而不是后台传输,所以我将想直接用HttpClient的GetAsync方法把文件Get下来就好了,之后老师希望将这个文件下载到用户的音乐库中(说实话,在听老师介绍音乐库的位置可以变化的时候,第一次听上去还以为老师想让我们理解绝对路径和相对路径),之后通过查阅的知识,我使用了

StorageLibrary storageLibrary = await StorageLibrary.GetLibraryAsync(libraryId: KnownLibraryId.Music);

    来选取用户的音乐库(这也算是一种绝对路径了吧)

    之后我便想直接把文件下载到这个文件夹里,结果搜索半天无果,又不能直接将HttpClient的GetAsync方法获得的result直接保存起来,之后看了几名其他同学的博客之后,我才发现没怎么用过文件操作的我(搞web的一般都是用数据库的吧。。。)弄错了思路,再次查阅了文件操作之后,我发现应该先在音乐库中创建一个文件,之后读取刚才获得的result,之后再将读取的内容写到刚才创建的文件中,就大功告成了!

    在这个过程中我遇到了几个问题,第一个是对用户错误输入的处理,在下载的部分如果用户的URL输入错误会导致程序崩溃,于是我对其进行了try catch处理,但是单纯的播放并无这个问题,因为播放器自带了错误处理功能,代码如下

            try {
                path1 = new Uri(onlineSrc.Text);
            }
            catch (System.UriFormatException error) {
                flag1 = false;
            }

          

    最后就是重复下载相同文件的问题,这次给予了一个好用的带可选参数的方法,让我不至于进行hash判断。。。

Windows.Storage.StorageFilesampleFil=awaitstorageLibrary.SaveFolder.CreateFileAsync(fileN,Windows.Storage.CreationCollisionOption.ReplaceExisting);

最后惯例是我的项目地址


    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值