【问题标题】:MediaPlayerElement play/pause button is always disabledMediaPlayerElement 播放/暂停按钮始终处于禁用状态
【发布时间】:2021-07-30 16:42:26
【问题描述】:

我正在开发一个新应用程序,我决定使用 MediaPlayerElement 播放背景音乐和视频,但是有一个问题。 此外,通用 Windows 平台示例上的 SystemMediaTransportControls 示例也存在相同的问题。 在该示例中,AreTransportControlsEnabled 设置为 False,但如果您将其更改为 True,您将获得一个禁用的播放/暂停按钮,并且没有启用它的属性! 甚至我尝试通过名称获取 MediaTransportControl 中的按钮并尝试将它们设置为启用,但是单击一次播放或暂停按钮会使其再次禁用而无需任何操作。

有什么解决办法吗? 问候。

编辑:我还更改了这些行以添加更多按钮。

<MediaPlayerElement x:Name="mediaPlayerElement" Margin="0,0,10,0" AreTransportControlsEnabled="True" VerticalAlignment="Top">
                        <MediaPlayerElement.TransportControls>
                            <MediaTransportControls IsNextTrackButtonVisible="True" IsPreviousTrackButtonVisible="True"
                                                    IsSkipBackwardButtonVisible="True" IsSkipBackwardEnabled="True"
                                                    IsSkipForwardButtonVisible="True" IsSkipForwardEnabled="True"/>
                        </MediaPlayerElement.TransportControls>
                    </MediaPlayerElement>

跳过按钮也被禁用,下一个和上一个按钮被启用,但如果您单击它们则不会执行任何操作。同样的行为也发生在我的应用程序上。

【问题讨论】:

    标签: c# uwp mediaplayerelement


    【解决方案1】:

    MediaPlayerElement 播放/暂停按钮始终处于禁用状态

    官方代码示例为handle the SMTC manually,,因此内部播放/暂停按钮始终处于禁用状态。

    如果您想使用内部 SMTC,请用上面的 xaml 代码制作一个空白示例。

    例如

    <MediaPlayerElement
        x:Name="mediaPlayerElement"
        Margin="0,0,10,0"
        AreTransportControlsEnabled="True"
        Source="ms-appx:///Assets/hello.mp4">
        <MediaPlayerElement.TransportControls>
            <MediaTransportControls
                IsNextTrackButtonVisible="True"
                IsPreviousTrackButtonVisible="True"
                IsSkipBackwardButtonVisible="True"
                IsSkipBackwardEnabled="True"
                IsSkipForwardButtonVisible="True"
                IsSkipForwardEnabled="True" />
        </MediaPlayerElement.TransportControls>
    </MediaPlayerElement>
    

    更新

    private async void Page_Drop(object sender, DragEventArgs e)
    {
        var def = e.GetDeferral();
        var file = (StorageFile)(await e.DataView.GetStorageItemsAsync()).FirstOrDefault();
        EmbeddedPlayer.Source = MediaSource.CreateFromStorageFile(file);
    
        //await AppCore.Instance.Play(new StorageFile[] { file });
        //EmbeddedPlayer.SetMediaPlayer(AppCore.Instance.MediaPlayer);
       
        EmbeddedPlayer.MediaPlayer.Play();
        def.Complete();
    }
    

    【讨论】:

    • 我知道它处理 SMTC 的方式。即使这个 XAML 不起作用,我的意思是 SkipForward 和 SkipBackward 以及播放/暂停按钮仍然被禁用。 :(
    • 是的,当然。但是如果我为它创建一个 repro,它与微软官方的 SMTC 样本并没有太大的不同。我想创建一个支持 SMTC 和 ModernFlyouts(商店应用程序)的音乐/视频播放器,但是好的,我会尽快制作并上传
    • 这里是最小复制。例如,如果您拖放一个 mp4 文件,它将开始播放。 mediafire.com/file/vn8big60zj1o85r/ProplayerRepro.rar/file
    • 你的样例不可用,能分享给github吗?
    • 糟糕,谢谢。那行得通:) 真的谢谢你
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2020-04-12
    • 2020-08-31
    • 2019-06-25
    • 2014-03-08
    • 2017-02-02
    • 2014-12-05
    相关资源
    最近更新 更多