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

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