如何使用 CrossMediaManager 从 Xamarin.Forms 中的特定位置播放 MP3 文件
How to Play MP3 file from certian position in Xamarin.Forms using CrossMediaManager
我正在将文件下载到我的 Xamarin Forms
应用程序中的本地存储。我正在使用 CrossMediaManager 来播放那些存储在本地的 mp3 文件。问题是播放器没有从某个位置开始播放音频。它总是从零开始播放。
我正在使用以下代码但没有帮助。我也试过将媒体文件加入队列并播放它们,但没有帮助。
if (Helper.FileExists(filePath))
{
var position = TimeSpan.FromSeconds(AyasAudios[AyaNumber].StartingPoint);
Debug.WriteLine("starting point: " + AyasAudios[AyaNumber].StartingPoint + " position: " + position);
await CrossMediaManager.Current.Play(new FileInfo(filePath));
await CrossMediaManager.Current.SeekTo(position);
}
无法在 CrossMediaManager 中的 CrossMediaManager.Current.Play
之后立即调用 CrossMediaManager.Current.SeekTo
。
这意味着我们最好在玩家处于 IsPlaying
状态后调用 SeekTo
。
因此可以将它们分开来调用它们,如下所示:
private async void Button_Clicked_Play(object sender, EventArgs e)
{
CrossMediaManager.Current.Play("https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3");
}
private async void Button_Clicked_SeekTo(object sender, EventArgs e)
{
if (CrossMediaManager.Current.IsPlaying())
{
await CrossMediaManager.Current.SeekTo(TimeSpan.FromSeconds(60));
}
}
我正在将文件下载到我的 Xamarin Forms
应用程序中的本地存储。我正在使用 CrossMediaManager 来播放那些存储在本地的 mp3 文件。问题是播放器没有从某个位置开始播放音频。它总是从零开始播放。
我正在使用以下代码但没有帮助。我也试过将媒体文件加入队列并播放它们,但没有帮助。
if (Helper.FileExists(filePath))
{
var position = TimeSpan.FromSeconds(AyasAudios[AyaNumber].StartingPoint);
Debug.WriteLine("starting point: " + AyasAudios[AyaNumber].StartingPoint + " position: " + position);
await CrossMediaManager.Current.Play(new FileInfo(filePath));
await CrossMediaManager.Current.SeekTo(position);
}
无法在 CrossMediaManager 中的 CrossMediaManager.Current.Play
之后立即调用 CrossMediaManager.Current.SeekTo
。
这意味着我们最好在玩家处于 IsPlaying
状态后调用 SeekTo
。
因此可以将它们分开来调用它们,如下所示:
private async void Button_Clicked_Play(object sender, EventArgs e)
{
CrossMediaManager.Current.Play("https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3");
}
private async void Button_Clicked_SeekTo(object sender, EventArgs e)
{
if (CrossMediaManager.Current.IsPlaying())
{
await CrossMediaManager.Current.SeekTo(TimeSpan.FromSeconds(60));
}
}