gpt4 book ai didi

c# - 检查用户是否在 Windows Phone 8.1 上添加了新音乐

转载 作者:行者123 更新时间:2023-11-30 12:27:58 24 4
gpt4 key购买 nike

我试图查明自上次使用应用后用户是否向手机上的“音乐”文件夹添加了新音乐。

我尝试通过检查 Music 文件夹的 DateModified 来做到这一点(当向手机添加新音乐时,它会在计算机上正确更新):

async void GetModifiedDate ()
{
BasicProperties props = await KnownFolders.MusicLibrary.GetBasicPropertiesAsync();
Debug.WriteLine("DATEMODIFIED: " + props.DateModified.ToString());
}

不幸的是,这会返回:

DATEMODIFIED: 1/1/1601 1:00:00 AM +01:00

我是做错了什么还是有另一种快速方法来检查用户是否添加了新音乐?

最佳答案

KnownFolders.MusicLibraryvirtual location .因此我认为,获取其属性可能是一个问题。

另一个问题是DateModified可能是个坏主意,因为当用户添加文件时它可能保持不变。你不能依靠它。 (some information)。您可以检查一下 - 当我尝试移动文件夹中的文件时,它们的 DateModified没有改变。

所以在这种情况下,恐怕您必须在 MusicLibrary 中列出您的文件,然后决定保存哪些内容以供将来比较。文件大小的总和可能是个好主意,因此两个不同的音乐文件大小相同的可能性很小。这还取决于您是否希望在用户将文件从一个文件夹移动到另一个文件夹时收到通知(总大小不会改变)。如果你想确保更多,你可以记住 Tuple<file.FolderRelativeId, fileSize> 的整个列表。 (例如)。

由于 FileQueries 还不适用于 Windows Phone,您将不得不递归地检索文件,简单的代码如下所示:

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

获得文件列表后,您可以决定要记住哪些内容,以便在下次应用启动时进行进一步比较。

关于c# - 检查用户是否在 Windows Phone 8.1 上添加了新音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23724001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com