目前播放的歌曲来自Windows 10' Now Playing'卡

时间:2017-10-16 19:09:27

标签: uwp windows-10

是否可以查询在Windows 10上播放音乐时显示的元数据?

http://i63.tinypic.com/1q00mc.jpg

虽然我发现了有关使用SMTC等MediaPlayer显示元数据的信息,但我无法找到任何方法来处理某个进程(它本身不会播放任何媒体)输出相同的元数据。

3 个答案:

答案 0 :(得分:2)

有一个.NET Framework包装器可以完成此任务,称为WindowsMediaController

它通过利用Windows.SDK.Contracts package在.NET Framework中使用Windows运行时API来实现。

这是将打印当前正在播放的媒体的基本实现:

using System;
using Windows.Media.Control;

//

public static void PrintCurrentlyPlaying()
{
   var sessionManager = GlobalSystemMediaTransportControlsSessionManager.RequestAsync().GetAwaiter().GetResult();
   var currentSession = sessionManager.GetCurrentSession();
   var mediaProperties = currentSession.TryGetMediaPropertiesAsync().GetAwaiter().GetResult();
   Console.WriteLine($"Playing {mediaProperties.Title} by {mediaProperties.Artist}");
}

答案 1 :(得分:1)

目前这是不可能的,因为我所知道的API没有提供此功能。

答案 2 :(得分:-1)

MusicProperties类可以访问项目的音乐相关属性(如文件或文件夹)。

您可以使用GetMusicPropertiesAsync()方法获取音乐属性,例如标题,专辑,时间跨度等。以下是详细过程。

try
{
    FileOpenPicker picker = new FileOpenPicker();
    picker.ViewMode = PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
    picker.FileTypeFilter.Add(".mp3");
    var file = await picker.PickSingleFileAsync();

    if (file != null)
    {
        StringBuilder outputText = new StringBuilder();
        MusicProperties musicProperties = await file.Properties.GetMusicPropertiesAsync();
        outputText.AppendLine("Album: " + musicProperties.Album);
        outputText.AppendLine("Rating: " + musicProperties.Rating);
        outputText.AppendLine("Title: " + musicProperties.Title);
        outputText.AppendLine("TimeSpan: " + musicProperties.Duration.ToString());
        MusicTextFiled.Text = outputText.ToString();
    }
}

catch (FileNotFoundException)
{

}