为什么MusicProperties-> Year总是返回当前年份?

时间:2014-10-05 14:53:48

标签: windows-runtime windows-phone-8.1 c++-cx

我正在尝试使用StorageFolder API获取音乐库中每个文件的音乐属性。

在我的音乐库上调用GetFilesAsync(CommonFileQuery :: OrderByName)后,我正在迭代生成的IVectorView ^并为每个文件调用StorageFile-> Properties-> GetMusicPropertiesAsync(),这本质上很慢,但我必须这样做,因为Windows Phone不支持QueryOptions

无论如何,在完成该任务之后,每个属性都是正确的,除了MusicProperties-> Year,这是2014年我手机上900多个音乐文件的每一个。这是一段简短的代码片段:

create_task(lib->GetFilesAsync(Search::CommonFileQuery::OrderByName))
    .then([](IVectorView<StorageFile^>^ songFiles)
{
    auto taskPtr = std::make_shared<std::vector<task<Song>>>(songFiles->Size);

    for (size_t i = 0, len = songFiles->Size; i < len; ++i)
    {
        StorageFile^ song = songFiles->GetAt(i);
        (*taskPtr)[i] = create_task(song->Properties->GetMusicPropertiesAsync()).then([]
            (MusicProperties^ props) 
        {

            Song s;
            s.album = std::wstring(std::move(props->Album->Data()));
            s.artist = std::wstring(std::move(props->Artist->Data()));
            s.title = std::wstring(std::move(props->Title->Data()));
            s.track = props->TrackNumber;
            s.year = props->Year;

            return s;
        });
    }

    //further processing is done in a when_all function after the song tasks have completed
}

Song只是一个简单的结构,可以暂时保存我的结果并稍后将其转换为JSON,但那个Year属性让我感到非常震惊。有没有其他人遇到过这个问题,还有其他方法从音乐文件中检索正确的发行年份吗?

0 个答案:

没有答案