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();
}
我正在使用 MediaElement
播放音频。我有一个项目列表,我需要一个接一个地播放音频。播放音频时,我将更改该列表项的背景颜色。此外,如果我点击一个项目,则该选定项目的音频开始播放,该项目的颜色也在修改。这些功能在 android 中运行良好。我添加了 android here 的视频。
因为 ios 平台中的 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();
}