? ? ? ? 以上是我第二次實(shí)現(xiàn)功能后的大體的示例。這一次添加了兩個(gè)功能钾腺,一個(gè)是播放在線的音頻几莽,另一個(gè)是下載正在播放的音頻并下載到用戶的音樂文件夾中。其他的功能并沒有改變肴裙。下面具體敘述實(shí)現(xiàn)的過程趾唱。
一、播放在線的音頻
? ? ? ? 剛拿到功能的時(shí)候蜻懦,我覺得這個(gè)功能是比較難實(shí)現(xiàn)的一個(gè)甜癞,但做的時(shí)候發(fā)現(xiàn)這個(gè)反而是很簡單的。功能主要是由一個(gè)TextBox和兩個(gè)函數(shù)實(shí)現(xiàn)的宛乃。就是將MediaElement的source屬性設(shè)置為輸入到TextBox中的uri悠咱。這個(gè)功能在微軟官方的MediaElement文檔中敘述的很詳細(xì),也是對(duì)播放源的補(bǔ)充:不僅可以選擇本地文件征炼,也可以選擇網(wǎng)上的音頻播放析既。參照文檔基本上改動(dòng)幾個(gè)變量名就可以實(shí)現(xiàn)功能了。以下是我的代碼:
參考文檔:https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.MediaElement
二柒室、下載音頻到指定文件夾
? ? ? ? 這個(gè)功能實(shí)現(xiàn)的時(shí)候用了很長時(shí)間渡贾,個(gè)人認(rèn)為是這次任務(wù)最難的一個(gè)部分。它涉及到了很多東西雄右,包括如何下載音頻空骚,從哪下載音頻,如何下載到指定文件夾擂仍,如何找到用戶的音樂文件等等囤屹。關(guān)于這個(gè)我也參考了很多微軟的文檔:
https://docs.microsoft.com/en-us/uwp/api/windows.networking.backgroundtransfer.downloadoperation
? ? ? ? 但是這些并沒有解決我的問題,因?yàn)檫@些都只是零件我還需要把他們組合起來逢渔。在這期間我還看了另一篇博客:https://www.cnblogs.com/T-ARF/p/5886153.html肋坚。這篇文章解決了我大部分的疑問,他讓我把之前看過的那些結(jié)合了起來肃廓,完整的實(shí)現(xiàn)了下載音頻到指定文件夾這一功能智厌。我的代碼如下:
? ? ? ? 主要是根據(jù)Uri的結(jié)尾判斷是不是音頻文件,如果是音頻文件盲赊,那么在音樂中創(chuàng)建一個(gè)NewSong.mp3铣鹏。然后將Uri中的信息傳到Buffer中,再將Buffer的數(shù)據(jù)寫入之前創(chuàng)建的文件中哀蘑。為圖簡單我就沒有去設(shè)計(jì)視頻文件的下載诚卸。在使用的過程中記得將Package.appxmanifest中的音樂庫打鉤葵第。
附之前的博客和Github地址: