Я воспроизводю видео через AVPlayerViewController в tvOS (Xamarin tvOS). Я приостанавливаю и возобновляю видео с помощью кнопки «Воспроизведение / Пауза» на пульте Apple TV. Я использую метод PressesBegan, чтобы получить событие при нажатии кнопки «Воспроизведение/Пауза». Это отлично работает на симуляторе, но не на реальных устройствах. На реальных устройствах мы не получаем события нажатия кнопки «Воспроизведение/Пауза». Мы пробовали это на Apple TV 4K (версия 12.11) и Apple TV (версия 11.4). Это происходит только при воспроизведении видео через AVPlayerViewController, в противном случае все работает нормально. Я пробовал метод UITapGestureRecognizer, PressesEnded, а также метод RemoteControlReceived. Но все равно помощи нет. Любая помощь будет высоко ценится.
Кнопка «Воспроизведение/Пауза» на пульте Apple TV не работает, пока видео воспроизводится с помощью AVPlayerViewController.
Ответы (2)
Ваше приложение не будет получать события кнопки Пауза (или Воспроизведение/Пауза) при воспроизведении видео. Это ожидаемое и задокументированное поведение. Система перенаправляет действие обработчику приложения «Сейчас исполняется» (в данном случае это AVPlayerViewController).
Вы не сказали, почему вы пытались перехватить воспроизведение/паузу...
Если вы пытаетесь отключить паузу, вам следует использовать другой подход; например, вы можете отключить взаимодействие с пользователем в корневом представлении AVPlayerViewController (это отключит не только воспроизведение/паузу, но и почти все элементы управления). Вы также можете отключить элементы управления воспроизведением. Помните, что у пользователя есть несколько способов сделать паузу, включая щелчок по сенсорной поверхности, использование другого типа пульта дистанционного управления или команду Siri «приостановить», ни один из которых не приведет к обычным событиям кнопки паузы.
Если вы пытаетесь определить, когда видео поставлено на паузу, вы можете использовать ключ-значение для наблюдения за свойством "скорость" проигрывателя (скорость также может измениться на ноль по другим причинам, например, из-за того, что воспроизведение подошло к концу).
UIView
с AVPlayerLayer
, и у меня та же проблема, что и на плакате: я добавил UITapGestureRecognizer
, и я получаю события воспроизведения/паузы в симуляторе, но не на устройстве.
- person NRitH; 21.07.2020
Добавьте UITapGestureRecognizer в ViewController и разрешите тип нажатия UIPressType.PlayPause.
var tap = new UITapGestureRecognizer(() =>
{
Console.WriteLine("Remote PlayPause button pressed");
})
{
AllowedPressTypes = new NSNumber[] { new NSNumber((long)UIPressType.PlayPause) }
};
this.View.AddGestureRecognizer(tap);
UIPressTypePlayPause
в качестве разрешенных типов. - person SushiHangover   schedule 03.01.2019