1. 程式人生 > >可視化作業——簡單播放器的更新

可視化作業——簡單播放器的更新

就是 load() github項目 string catch rmi github dev AI

本次我對之前的簡單播放器進行了功能上的更新,主要加入了兩個功能

1.能夠播放在線音樂

2.可以將音樂緩存到本地

1.在編輯第一個功能的時候,我借鑒了很多,包括微軟文檔(https://msdn.microsoft.com/en-us/library/windows/apps/mt187272.aspx),其他同學的博客等等。而我的第一個版本的代碼是這樣的

 private void TxtFilePath_KeyUp(object sender, KeyRoutedEventArgs e)
        {
            if (e.Key == Windows.System.VirtualKey.Enter)
            {
                TextBox tbPath 
= sender as TextBox; if (tbPath != null) { LoadMediaFromString(tbPath.Text); } } } private void LoadMediaFromString(string path) { try { Uri pathUri = new
Uri(path); media.Source = pathUri; } catch (Exception ex) { if (ex is FormatException) { // handle exception. // For example: Log error or notify user problem with file } } }

沒錯!就是文檔的代碼!

但是之後我發現完全沒有必要這麽麻煩,我們可以直接將URL交給播放器,就像這樣

 Uri pathUri = new Uri(mybox.Text);
                        media.Source = pathUri;
                        media.Play();

其中mybox是我加入的一個TextBox,在播放器中只需將地址輸入TextBox中即可實現播放在線音頻。

技術分享圖片

2.將文件緩存到本地

借鑒文檔:https://docs.microsoft.com/zh-cn/windows/uwp/files/quickstart-reading-and-writing-files

我照著文檔將訪問文件的代碼copy下來之後,有幾處錯誤,但當時我並不慌,因為我相信VS強大的IDE。然而在我讓VS自行修改之後,卻發現有一個函數無論如何都無法通過

技術分享圖片

就是這裏的GetBufferAsync,當時我是有點小慌的,在反復撤銷檢查之後,我才發現在對httpClient進行自動修復時,選擇第二項就可完美運行,而上圖是修改時候運行正常之後才截的。

public async Task<StorageFile> Load()
        {
            try
            {
                var httpClient = new HttpClient();
                var buffer = await httpClient.GetBufferAsync(new Uri(mybox.Text));
                var file = await KnownFolders.MusicLibrary.CreateFileAsync("neusong.mp3", CreationCollisionOption.ReplaceExisting);
                using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    await stream.WriteAsync(buffer);
                    await stream.FlushAsync();
                }
                Uri pathUri = new Uri(mybox.Text);
                media.Source = pathUri;
                media.Play();
                return file;
                
            }
            catch { }
            return null;
        }

在我仿照文檔寫完程序運行之後,發現不管怎麽點我的音樂文件夾下都是空空如也,完全找不到本應緩存下來的neusong.mp3。知道我發現了這篇文檔https://docs.microsoft.com/zh-cn/windows/uwp/files/file-access-permissions,我才明白這個程序並沒有訪問音樂文件夾的權限,修改一下就可以了。

技術分享圖片

這回我們再運行,OK,完美,讓我插會兒腰~

技術分享圖片

技術分享圖片

GitHub項目地址:https://github.com/wangzhexiwen/Simple-Media

可視化作業——簡單播放器的更新