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; 
} 

一旦你有您的文件列表,您可以决定在下次应用程序启动时要记住哪些内容以供进一步比较。