繁体   English   中英

Windows Phone 8.1检查新媒体文件

[英]WIndows Phone 8.1 check for new media files

检查Windows Phone 8.1的“图库”中是否有任何新的媒体文件的最佳方法是什么?

我看到WP81中没有像iOS7或Android这样的内容观察器API。

我目前正在计算每个文件的校验和及其名称和大小,并使用windows.storage列表在本地存储,每次当它检查新项目时,我都会为每个文件再次创建校验和并将其与保存的校验和列表进行比较。

当文件数量更多时,这会带来巨大的开销。

有没有更优雅的方式做到这一点?

没有当前的API可以执行此操作,因此,在这种情况下,恐怕您将不得不在Media Files(例如,MusicLibrary)中列出文件,然后确定要保存的内容以备将来比较。 文件大小的总和可能是一个好主意,因此,两个不同的音乐文件大小相同的可能性很小。 这还取决于是否要通知用户用户是否已将文件从一个文件夹移动到另一个文件夹(总大小不会更改)。 如果要确保更多内容,您可以记住Tuple<file.FolderRelativeId, fileSize>的整个列表。由于Windows Phone尚不提供FileQueries,因此您必须递归地检索文件,简单的代码如下所示:

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

有了文件列表后,您可以决定记住什么,以便下次启动应用程序时进行进一步比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM