UWP 学习笔记 四 (文件自定义路径保存权限获取)

这次是继上次mediaplayer后继续对功能进行扩充,即添加在线播放功能,还有下载播放功能。

首先,在线播放功能好说,只需要将原来从 FileOpenPicker 拿来的文件源更换为网站地址Uri就行。

下来就是缓存文件,因为以前用httpclient模拟登录过,所以还是知道一些这个的用法的,只需要向目的Uri发送get请求,将respond的内容以比特流写入文件即可。

烦人的就是UWP这个文件读写,由于权限的限制,没有办法像传统windows桌面那样访问任意位置的文件夹,只能访问一些有权限的文件夹,如音乐,图片什么的(也许是为了支持全平台吧,毕竟WindowsPhone的存储目录就只有6个文件夹,当然还是有别的方法获得的,不过比较麻烦一点)。下面就是从网上找到的UWP的文件存储方式,首先是保存到默认的系统文件夹:

要什么权限,选什么权限

下来是自定义保存位置:

这个还是得看看别人的,官网上也有,但是没有怎样持久化权限的内容

URLhttps://blog.csdn.net/lindexi_gd/article/details/52724417

这个开发者算是比较良心了,讲的很细致,就是他在本地化数据时使用的是第三方的json序列化方法,虽然在比较中这个方法的效率似乎高一些,但因为我们需要本地化的信息量不大,而且次数也不多,因此可以使用C#自己的序列化功能:

下面是先为用户选取的文件夹获得操作权限:

下来是本地化数据,其中SaveLocal是一个全局的字符串变量,用于承载权限Token

出于人性化考虑,在保存下载的文件前先查看有无本地记录,有的话就赋值给SaveLocal

再测试SaveLocal是否为空,若为空就保存在默认地址下(即系统的音乐目录):

其中出于对性能的优化,也是为了文件读写操作能够不冲突,将stream放在using块中,而对这些与界面无关的进程采用异步方式,这句话也是在一个博客中看到的。

 

上面这些其实说起来虽然有些困难,但比起最令人头痛的UI来说,就显得不值一提了,我感觉制作一个软件,我有三分之二的心思都花在了UI和界面效果的视觉感受上。

开始界面如下图,通过单击可以隐藏控制栏

StatusBar Hide

StatueBar Show

当然,你看这个StatueBar可以使用系统自带的TransportControl但是因为其中有很多不常用的功能,有些VisualState也不常用,所以我索性从Control自定义了一个控制条。当然,自定义也有麻烦的地方,就是以前TransportControl按键的功能都需要自己实现,功能越多麻烦的一。

单击打开文件按钮可以弹出flyout选择播放模式是本地文件还是网络资源,选择网路资源则会在上方弹出搜索框提醒输入网址,输入完成后可以选择在线播放或缓存。

加入了播放列表,但还没有进行数据绑定

设置按钮可以弹出设置面板,虽然目前只添加了让用户选择文件保存位置的选项

当设备的指针输入为鼠标时,可以用滚动事件改变音量,而当输入为手势时,可以用滑动

面板有淡入淡出效果

当音量为0时显示静音符号,从静音恢复时显示恢复声音符号

在视频播放时控制栏可以自动隐藏,但音量和静音符号是另一层面板,随叫随到。

GitHub :https://github.com/20154530/SimpleMediaplayer

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章