如何为集成SMTC的媒体播放器设置Windows操作中心的名称与图标
设置Windows媒体传输控制(SMTC)的应用名称与图标
要修改Windows操作中心里SMTC显示的应用名称和图标,核心是通过SystemMediaTransportControlsDisplayUpdater类实现,而非直接操作ISystemMediaTransportControls接口。具体步骤如下:
- 获取SMTC实例后,调用
get_DisplayUpdater()拿到SystemMediaTransportControlsDisplayUpdater对象 - 设置应用名称:调用
DisplayUpdater->set_AppDisplayName(L"你的应用名称")传入自定义名称 - 设置应用图标:先将本地图标文件转换为
RandomAccessStreamReference,再调用DisplayUpdater->set_AppIcon(streamReference)传入图标流 - 最后调用
DisplayUpdater->Update()提交所有更改
具体代码示例(C++/WinRT)
#include <winrt/Windows.Media.Control.h> #include <winrt/Windows.Storage.Streams.h> using namespace winrt; using namespace Windows::Media::Control; using namespace Windows::Storage::Streams; void SetSMTCAppInfo(SystemMediaTransportControls smtc) { auto displayUpdater = smtc.DisplayUpdater(); // 设置自定义应用名称 displayUpdater.AppDisplayName(L"自研媒体播放器"); // 加载本地图标文件并转换为流引用 auto iconFile = Windows::Storage::StorageFile::GetFileFromPathAsync(L"C:\\YourApp\\Assets\\AppIcon.png").get(); auto iconStreamRef = RandomAccessStreamReference::CreateFromFile(iconFile); displayUpdater.AppIcon(iconStreamRef); // 提交更新到系统 displayUpdater.Update(); }
关键细节说明
- 若使用C++/CX而非WinRT,API调用逻辑一致,仅语法略有差异:比如
displayUpdater->AppDisplayName = ref new Platform::String(L"你的应用名称"); - 图标推荐使用32x32或64x64尺寸的PNG格式,保证在操作中心显示清晰
- 未主动设置时,Windows会默认复用最近使用SMTC的应用信息,这就是你遇到显示Firefox名称和图标的原因
- 关于Firefox/Chromium的实现:它们的SMTC名称和图标设置逻辑通常封装在媒体会话初始化的上层代码中,并非直接暴露在你查看的SMTCProvider核心文件里,可排查它们的媒体会话启动流程代码
内容的提问来源于stack exchange,提问作者Codrut
相关产品推荐
相关产品推荐

