Я проигрываю аудиофайлы из библиотеки устройства с помощью плагина CrossMediaManager . Он воспроизводит файлы правильно, однако в статусе MediaitemFinised
вместо stopped
я получаю статус playing
. Я пытаюсь воспроизвести другой файл или прекратить воспроизведение в зависимости от некоторых настроек. например, если пользовательские настройки настроены для следующего воспроизведения, я выбираю другой файл и воспроизводю следующий элемент, но мне нужно сделать это после того, как воспроизведение первого элемента будет полностью завершено.
void AddCrossMediaHandlers()
{
CrossMediaManager.Current.StateChanged += Current_StateChanged;
CrossMediaManager.Current.MediaItemFinished += Current_MediaItemFinished;
CrossMediaManager.Current.MediaPlayer.BeforePlaying += MediaPlayer_BeforePlaying;
}
void RemoveCrossMediaHandlers()
{
CrossMediaManager.Current.StateChanged -= Current_StateChanged;
CrossMediaManager.Current.MediaItemFinished -= Current_MediaItemFinished;
CrossMediaManager.Current.MediaPlayer.BeforePlaying -= MediaPlayer_BeforePlaying;
}
private void Button_Clicked(object sender, EventArgs e)
{
StartPlaying(someFilePath);
}
async void StartPlaying(filePath)
{
var player = CrossMediaManager.Current;
if (player.State != MediaManager.Player.MediaPlayerState.Playing)
{
if (!string.IsNullOrEmpty(filePath))
await player.Play(new FileInfo(filePath));
}
}
private void Current_MediaItemFinished(object sender, MediaManager.Media.MediaItemEventArgs e)
{
Debug.WriteLine("item Finished event: " + CrossMediaManager.Current.State); //this return playing status therefore it doesen't play the next file.
//When media is finished look for user setting and play next or stop playing.
if (playNext) //I also checked !CrossMediaManager.Current.IsPlaying(), but didn't help.
StartPlaying(NextFilePath); //This fire, but because the status is playing, it doesn't play next.
}