Xamarin Forms:MediaElement 音频播放问题

Xamarin Forms: Issue with MediaElement audio playing

我正在使用 MediaElement 播放音频。我有一个项目列表,我需要一个接一个地播放音频。播放音频时,我将更改该列表项的背景颜色。此外,如果我点击一个项目,则该选定项目的音频开始播放,该项目的颜色也在修改。这些功能在 android 中运行良好。我添加了 android here 的视频。

因为 ios 平台中的 of MediaElement, I have added a custom renderer。添加自定义渲染器后,在 ios 中播放音频时出现一些问题。播放第一个音频后,第二个和第三个项目的背景颜色正在修改。之后,接下来的 2 项颜色正在修改。我需要一个一个的玩项目

我的代码:

//Xaml
<MediaElement 
    x:Name="audio_mediaelement"
    MediaEnded="AudioEnded"
    ShowsPlaybackControls="True">
    <MediaElement.HeightRequest>
        <OnIdiom x:TypeArguments="x:Double">
            <OnIdiom.Phone>80</OnIdiom.Phone>
            <OnIdiom.Tablet>120</OnIdiom.Tablet>
            <OnIdiom.Desktop>80</OnIdiom.Desktop>
        </OnIdiom>
    </MediaElement.HeightRequest>
</MediaElement>

//Initial audio source set up
audio_mediaelement.Source = aduiourl

//When audio end 
public void AudioEnded(object sender, EventArgs args)
{
    audioOrder = audioOrder + 1;
    if(audioOrder < listVerses.Count)
    {
        audio_mediaelement.Source = aduioFormat + listVerses[audioOrder].audioUrl;
        ChapterList.ItemsSource = listVerses;
        listVerses[audioOrder].BGColor = Color.FromHex("#f2ee71");
        ChapterList.ScrollTo(((IList)ChapterList.ItemsSource)[audioOrder-1], ScrollToPosition.Start, true);
    }
}

我已经上传了一个示例项目 here 以供参考,因为没有示例很难理解这个问题。如果我没有添加 MediaElement 自定义渲染器,应用程序将在播放音频后挂起。

您可以将 AutoPlay 默认设置为 False 并手动播放视频。

<MediaElement 
     HeightRequest="400"
     AutoPlay="False"
     x:Name="media"
     MediaEnded="AudioEnded"
     ShowsPlaybackControls="True">
                
</MediaElement>

在代码背后

设置后播放视频url

media.Source = xxx;
media.Play();

以及什么时候想播放下一个视频

public void AudioEnded(object sender, EventArgs args)
{
   media.Stop();
   media.Source = new url;
   media.Play();
}