Xamarin社区工具包MediaPlayer自动播放无法正常工作?

3
我遇到了这个问题多次,但直到我现在正在做的任务,它才让我真正担心起来。现在我真的需要移除自动播放,因为这个音频必须仅在用户交互时才能播放,而不是在页面加载时就开始播放。
MediaPlayer的CurrentState属性是只读的,不能在屏幕加载时更改或分配。这非常恼人,我不知道为什么它不起作用。即使设置了"AutoPlay="false"",声音仍会在页面加载时播放。
我的元素由于只需播放声音而不需要任何人看到它,所以是不可见的。如果你有其他方法,请在评论中建议,我会尝试一下。
<xct:MediaElement x:Name="mediaPlayer"
                  Source="{Binding WordSoundSource}"
                  IsVisible="false"
                  AutoPlay="false"/>

更新
如果我在构造函数中加入mediaPlayer.Stop()来在开始时停止元素播放,那么用户点击播放事件时将不会播放任何内容,这非常令人烦恼。

以下是我如何处理用户点击图像的mediaPlayer.Play(),该图像具有Image.GestureRecognizers&&TapGestureRecognizer

<Image Source="sound_icon.png"
       VerticalOptions="CenterAndExpand" 
       HorizontalOptions="EndAndExpand"
       HeightRequest="40"
       WidthRequest="40"
       Margin="0, 10, 80, 0">
           <Image.GestureRecognizers>
               <TapGestureRecognizer x:Name="ReplaySound"
                                     NumberOfTapsRequired="1"
                                     Tapped="ReplaySound_Tapped"/>
           </Image.GestureRecognizers>
</Image>

private void ReplaySound_Tapped(object sender, EventArgs e)
{
    if (mediaPlayer.CurrentState == MediaElementState.Stopped || 
       mediaPlayer.CurrentState == MediaElementState.Paused)
    {
        mediaPlayer.Play();
    }
}

GitHub上还有一个关于这个问题的帖子issues #1715,但它已经发布了近一年时间...我在想这是否是同一个问题?

提前致谢。


你尝试按照错误报告中建议的将速度设置为0了吗? - Jason
是的,那个方法确实可行,但它很奇怪,我有一个解决方案。我真的想知道是否有任何其他解决方案可能在存在错误的一年内出现过。 - ThisQRequiresASpecialist
没有新的解决方案,阅读了你的问题后,我回到了我的旧存储库,只是为了确认我仍然有同样的问题。唯一的解决方案如下所示。 - FreakyAli
1个回答

1

去年我遇到了这个问题,唯一解决的方法是将速度默认设置为0,然后在需要播放时将其设置为1。

<MediaElement 
       x:Name ="vidPlayer"
       Source="ms-appx:///XamarinForms101UsingEmbeddedImages.mp4"
       Speed="0"   
       ShowsPlaybackControls="True"
       .
       . 
       .
        />

当你开始播放时,请将其更改为1:

vidPlayer.Speed= 1.0;

我明白这是个奇怪的变通方法,所以我完全能理解你。为了避免在 MAUI 中出现这样的问题,我计划从头开始制作自己的控件。我已经做了一堆,如果你有兴趣,可以在这里查看:https://github.com/FreakyAli/Maui.FreakyControls。下一步,我打算着手制作视频/音频播放器,或者您可以提出功能请求,我会看看能做什么:) - FreakyAli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接