1

我正在开发一个新应用程序,我决定使用 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>

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

4

1 回答 1

1

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

官方代码示例是手动处理 SMTC,因此内部播放/暂停按钮始终处于禁用状态。

如果您想使用内部 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();
}
于 2021-08-02T02:33:10.413 回答