如何用C#在Windows 10锁屏上显示自定义文本,实现类似Spotify的效果
解决方案
你要实现的Chrome/Spotify类锁屏常驻文本+控制效果,本质是集成了Windows系统媒体传输控件(SMTC)能力,你之前用普通Toast通知的方向是错误的。完整操作步骤如下:
1. 配置应用清单
首先打开项目的Package.appxmanifest文件完成两项配置:
- 切换到「声明」选项卡,添加「后台任务」声明,勾选「媒体播放」任务类型,入口点填写你应用内存在的任意类名即可
- 切换到「应用」选项卡,找到「锁屏通知」下拉选择框,选中「徽章和文本通知」
2. 集成SMTC实现锁屏媒体信息展示
这部分是实现你要的锁屏效果的核心逻辑,示例代码如下:
using Windows.Media; using Windows.Storage.Streams; // 获取当前视图的SMTC实例 var smtc = SystemMediaTransportControls.GetForCurrentView(); // 启用SMTC基础能力 smtc.IsEnabled = true; smtc.IsPlayEnabled = true; smtc.IsPauseEnabled = true; // 构造要在锁屏展示的媒体信息 var updater = smtc.DisplayUpdater; updater.Type = MediaPlaybackType.Music; // 配置展示文本 updater.MusicProperties.Title = "自定义主标题文本"; updater.MusicProperties.Artist = "自定义副标题文本"; updater.MusicProperties.AlbumTitle = "自定义辅助文本"; // 可选:配置展示的封面图 // updater.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/cover.jpg")); // 提交更新,提交后锁屏即可看到对应内容 updater.Update(); // 可选:注册控制按钮点击回调 smtc.ButtonPressed += (sender, args) => { if (args.Button == SystemMediaTransportControlsButton.Play) { // 处理播放逻辑 smtc.PlaybackStatus = MediaPlaybackStatus.Playing; } else if (args.Button == SystemMediaTransportControlsButton.Pause) { // 处理暂停逻辑 smtc.PlaybackStatus = MediaPlaybackStatus.Paused; } };
(可选)如果你需要用普通Toast实现锁屏文本展示
你之前的Toast代码不生效有两个原因:一是没开清单里的锁屏通知权限,二是没有配置Toast的锁屏展示字段,修正后的示例代码如下:
ToastContent content = new ToastContent() { Scenario = ToastScenario.Reminder, Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { // 必须配置主副文本,Attribution不会展示在锁屏上 Children = { new AdaptiveText() { Text = "锁屏主标题" }, new AdaptiveText() { Text = "锁屏副标题" } }, // 显式开启锁屏可见 LockDetails = new ToastLockDetails() { Visible = true } } }, Actions = new ToastActionsCustom() { Buttons = { new ToastButton ("按钮内容", "点击参数") } } }; var notification = new ToastNotification(content.GetXml()); // 可选:设置Toast常驻到用户手动关闭 notification.ExpirationTime = DateTimeOffset.Now.AddDays(1); ToastNotificationManager.CreateToastNotifier().Show(notification);
最终验证
代码修改完成后,先进入Windows设置->系统->通知和操作,找到你的应用,确认「在锁屏上显示通知」开关已开启,运行应用触发逻辑后按Win+L锁屏即可看到效果。
内容的提问来源于stack exchange,提问作者wpferr19
相关产品推荐
相关产品推荐

