如何从KnownFolders.MusicLibrary存储文件夹中获取所有专辑封面?

时间:2014-05-21 08:30:19

标签: c# windows windows-phone-8 windows-8.1 windows-phone-8.1

您好我想尽可能快速准确地获取专辑艺术家的所有名字。

但是,我意识到Windows运行时没有API可以轻松地提取所有名称,就像在WP8中一样。

由于文件夹中可以有子文件夹,我已经创建了一个递归方法,每次IStorageItem都不是TypeFileFile时调用自身。基本上,我钻进每个文件夹,直到我到达一个音频文件,然后从那里我可以提取文件属性,如专辑艺术家。之后,我在专辑艺术家列表上调用了Distinct(),因为每个音频文件中可以有多个相同的艺术家。

正如您可能已经知道的那样,这似乎效率非常低,需要花费很长时间才能完成所有带有大量音乐的递归调用。我确信有更好的方法,如果有人知道更好的方法,我会寻求帮助吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

更快的方法是使用KnownFolders.MusicLibrary.GetFoldersAsync(CommonFolderQuery.GroupByArtist);获取设备上的所有音乐文件,如here所示,分为每个艺术家的虚拟文件夹。这是一个设备深度搜索,因此您不必进行任何递归枚举。

获得文件夹列表后,您可以运行相同的逻辑,从结果中的每个文件夹中查找艺术家姓名。