Он работает отлично, но, к сожалению, я не могу найти решение, позволяющее заставить медиа работать должным образом после сворачивания приложения и возврата его на передний план. Не знаю почему, но похоже, что плеер не предназначен для возобновления работы после разрушения поверхности. Вот почему я попытался удалить объекты Mediaplayer и VLC в методе жизненного цикла OnSleep и восстановить их в OnResume.
MainViewModel.cs:
Код: Выделить всё
public void OnSleep()
{
MediaPlayer.Dispose();
LibVLC.Dispose();
}
public void OnResume()
{
LibVLC = new LibVLC(enableDebugLogs: true);
using var media = new Media(LibVLC, new Uri("http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"));
MediaPlayer = new Shared.MediaPlayer(LibVLC)
{
Media = media
};
MediaPlayer.Play();
}
Код: Выделить всё
protected override void OnSleep()
{
base.OnSleep();
Page page = Shell.Current.CurrentPage;
if (page.GetType().Equals(typeof(MainPage)))
{
var mainpage = (MainPage)Shell.Current.CurrentPage;
var mainvm = (MainViewModel)mainpage.BindingContext;
mainvm.OnSleep();
}
}
protected override void OnResume()
{
base.OnResume();
Page page = Shell.Current.CurrentPage;
if (page.GetType().Equals(typeof(MainPage)))
{
var mainpage = (MainPage)Shell.Current.CurrentPage;
var mainvm = (MainViewModel)mainpage.BindingContext;
mainvm.OnResume();
}
}
введите описание изображения здесь
Изменить размер или положение медиаплеера с помощью .AspectRatio или .Scale больше невозможно.
Есть ли способ сохранить работу медиаплеера в фоновом режиме или способ отобразить медиаплеер с исходным положением и размером после поверхность разрушается и застраивается заново?
Подробнее здесь: https://stackoverflow.com/questions/798 ... mes-back-t
Мобильная версия