0

什麼是檢查windows phone 8.1上的Gallery中是否有新媒體文件的最佳方法?WIndows Phone 8.1檢查新媒體文件

我看到在WP81中沒有像iOS7或Android這樣的內容觀察器API。

我目前正在計算每個文件的校驗和及其名稱和大小,並使用windows.storage列表進行本地存儲,每次檢查新項目時,我會爲每個文件再次創建校驗和,並將其與已保存的校驗和列表。

當文件數量多時,這會帶來巨大的開銷。

有沒有更好的方法來做到這一點?

+0

可能沒有簡單的解決方案。 [類似問題在這裏](http://stackoverflow.com/q/23724001/2681948)。 – Romasz 2014-09-11 08:22:59

回答

0

目前還沒有API來做到這一點,所以在這種情況下,恐怕你不得不在媒體文件(例如MusicLibrary)中列出你的文件,然後決定爲未來的比較保存什麼。文件大小的總和可能是一個好主意,因此兩個不同音樂文件的大小可能會相同。如果用戶將文件從一個文件夾移動到另一個文件夾(總大小不會更改),也取決於是否要通知您。如果你想確保你越能記住的Tuple<file.FolderRelativeId, fileSize> 整個列表作爲FileQueries尚未公佈Windows Phone的,你將不得不遞歸retrive文件簡單的代碼可以是這樣的:

// first - a method to retrieve files from folder recursively 
private async Task RetriveFilesInFolder(List<StorageFile> list, StorageFolder parent) 
{ 
foreach (var item in await parent.GetFilesAsync()) list.Add(item); 
foreach (var item in await parent.GetFoldersAsync()) await RetriveFilesInFolder(list, item); 
} 

private async Task<List<StorageFile>> GetFilesInMusic() 
{ 
StorageFolder folder = KnownFolders.MusicLibrary; 
List<StorageFile> listOfFiles = new List<StorageFile>(); 
await RetriveFilesInFolder(listOfFiles, folder); 
return listOfFiles; 
} 

一旦你有您的文件列表,您可以決定在下次應用程序啓動時要記住哪些內容以供進一步比較。