【发布时间】:2017-06-20 22:02:07
【问题描述】:
我正在使用 MedialPlayer 控件在我的应用程序中播放音效,如 here 所述。声音是当应用程序发生某些事情时“在后台”播放的简短声音效果,用户不应看到任何类型的媒体播放控件。
代码相当简单,看起来像这样:
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.Source = MediaSource.CreateFromUri(pathUri);
mPlayer.Play();
这很好用,除了当用户按下键盘上的音量控制按钮时,音量控制旁边会出现一个迷你媒体播放器控件,用户可以按下播放按钮再次播放最后一个声音(见图)。我想隐藏这个。用户不应该看到这个或能够重放声音。
问题14578867 提供的解决方案不起作用。答案中提到的属性不存在(例如 IsPlayPauseVisible、uImode、IsInteractive)。我尝试使用 SystemMediaTransportControls 中的类似属性,但没有区别。我认为这些是针对出现在应用程序中的控件(我没有),而不是针对我想要隐藏的“操作系统媒体控件”。
mPlayer.SystemMediaTransportControls.IsEnabled = false;
mPlayer.SystemMediaTransportControls.IsPlayEnabled = false;
如何禁用/隐藏它?
以下是复制问题的分步指南:
- 创建一个新的 Windows 通用 Visual C# 空白应用程序
- 将按钮添加到 MainPage.xaml 并将 mp3 文件添加到资产
- 将以下代码粘贴到 MainPage.cs
- 运行应用,点击按钮
- 在键盘上按音量增大按钮
- 使用音量控制旁边的播放按钮观察“媒体控制”(见上图)。
按下播放按钮再次播放声音。如果你很快,你也可以暂停播放。 SystemMediaTransportControls 属性没有区别。
using Windows.Media.Core;
using Windows.Media.Playback;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
namespace App2
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void Button_Tapped(object sender, TappedRoutedEventArgs e)
{
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.Source = MediaSource.CreateFromUri(new System.Uri("ms-appx:///Assets/clap.mp3"));
mPlayer.SystemMediaTransportControls.IsPlayEnabled = false;
mPlayer.SystemMediaTransportControls.IsEnabled = false;
mPlayer.Play();
}
}
}
【问题讨论】:
-
我已经测试了你的代码,它可以隐藏
SystemMediaTransportControlsbymPlayer.SystemMediaTransportControls.IsEnabled。如果你想禁用SystemMediaTransportControls中的播放按钮,你应该可以将IsPauseEnabled、IsStopEnabled和IsPlayEnabled设置为false。 -
@JaydenGu-MSFT 我添加了一步一步的指南来复制问题。
标签: c# uwp media-player windows-10-universal