Как перехватить ошибки и изменить стиль форм libvlcsharp xamarin - PullRequest
0 голосов
/ 01 апреля 2020

Я правильно внедрил LibVlcSharp в моем проекте Xamarin.Forms .

using (var _libVLC = new LibVLC())
            {
                var media = new Media(_libVLC, _link, FromType.FromLocation);
                myvideo.MediaPlayer = new MediaPlayer(media)
                {
                    Fullscreen = true
                };
                myvideo.MediaPlayer.Play();
            };

В моем видеоплеере потоковое видео с Google Drive, но иногда это может случается, что носитель выдает ошибку, и эта ошибка отображается:

enter image description here

Потоковые работы , может быть много причин для ошибки но это не то, что меня интересует. Я хотел бы понять, как перехватить эту ошибку и настроить эту метку ошибки , но я не нашел ничего в документации или в Интернете.

Я также хотел знать если можно было изменить стиль кнопок, я нашел это свойство myvideo.PlaybackControls, которое имеет много других свойств, но я не знаю, правильно ли оно и как его применять.

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Посмотрите на

 <Label Text="{TemplateBinding ErrorMessage}" Style="{TemplateBinding MessageStyle}"
                       IsVisible="{TemplateBinding ErrorMessage, Converter={StaticResource ObjectToBoolConverter}}" />

С https://code.videolan.org/videolan/LibVLCSharp/-/blob/3.x/LibVLCSharp.Forms/Shared/Themes/Generic.xaml. Это базовый стиль, предоставляемый LibVLCSharp, который вы хотите изменить.

Вы можете переопределить стиль, следуя этому руководству https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/styles/xaml/inheritance

В XAML это может быть

<Style x:Key="labelStyle" TargetType="Label" BasedOn="{StaticResource MessageStyle}">
   <Setter Property="TextColor" Value="Teal" />
</Style>

Я создал заявку, чтобы добавить больше документов об этом https://code.videolan.org/videolan/LibVLCSharp/-/issues/309

0 голосов
/ 01 апреля 2020

Существует ShowError method, но никаких других подробностей

private void ShowError()
{
    var errorTextBlock = ErrorTextBlock;
    if (errorTextBlock != null)
    {
        errorTextBlock.Text = string.Format(ResourceLoader.GetString("Error"), Manager.Get<StateManager>().MediaResourceLocator);
        VisualStateManager.GoToState(this, ErrorState, true);
    }
}

Вы можете получить больше журналов, подписавшись на LibVLC.Log событие

У меня нет кода запуска, но Я полагаю, что вы можете перехватывать ошибки с событием ErrorOccured, как показано ниже

var stateManager = Manager.Get<StateManager>();
stateManager.ErrorOccured += (sender, e) => ShowError();

Это должно дать вам объяснение, а если нет, вы должны поднять проблему на libvlcsharp github

Похоже, что они создали PlayBackControls свойство привязки к PlayBackControls библиотеки LibVLCSharp.Uno элемента PlayBackControls и значки применяются через этот XAML

<ContentPresenter Grid.Row="1" Content="{TemplateBinding PlaybackControls}" />

Вы должны быть в состоянии изменить его, связав, насколько он соответствует PlayBackControls. Android. iOS

...