Xamarin 在使用AVPlayerViewController播放视频时,apple tv遥控器上的“播放/暂停”按钮不起作用

Xamarin 在使用AVPlayerViewController播放视频时,apple tv遥控器上的“播放/暂停”按钮不起作用,xamarin,avplayer,tvos,apple-tv,avplayerviewcontroller,Xamarin,Avplayer,Tvos,Apple Tv,Avplayerviewcontroller,我正在tvOS(Xamarin tvOS)中通过AVPlayerViewController播放视频。我正在使用apple tv遥控器上的播放/暂停按钮暂停和恢复视频。我正在使用PressesBegind方法在单击播放/暂停按钮时获取事件。这在模拟器上运行良好,但在实际设备上不起作用。在实际设备上,我们无法获取按下播放/暂停按钮的事件。我们在苹果电视4K(12.11版)和苹果电视(11.4版)上试用了它。 只有当我通过AVPlayerViewController播放视频时才会发生这种情况,否则效

我正在tvOS(Xamarin tvOS)中通过AVPlayerViewController播放视频。我正在使用apple tv遥控器上的播放/暂停按钮暂停和恢复视频。我正在使用PressesBegind方法在单击播放/暂停按钮时获取事件。这在模拟器上运行良好,但在实际设备上不起作用。在实际设备上,我们无法获取按下播放/暂停按钮的事件。我们在苹果电视4K(12.11版)和苹果电视(11.4版)上试用了它。 只有当我通过AVPlayerViewController播放视频时才会发生这种情况,否则效果会很好。我尝试了UITapgestureReceignizer,按SENDED方法,还尝试了RemoteControlReceived方法。但仍然没有任何帮助。任何帮助都将不胜感激


将UIAPTgestureRecognitor添加到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);

播放视频时,您的应用程序将不会收到暂停(或播放/暂停)按钮事件。这是预期的——并有记录的——行为。系统将操作重定向到“正在播放”应用程序的处理程序(在本例中为AvPlayServiceController)

你没有说你为什么要拦截播放/暂停

  • 如果你试图禁用暂停,你应该采取不同的方法;例如,您可以在avplayervewcontroller的根视图上禁用用户交互(这不仅禁用播放/暂停,而且几乎禁用所有控件)。您还可以禁用播放控件。请记住,用户有多种暂停方式,包括单击触摸屏、使用不同类型的遥控器或告诉Siri“暂停”,这两种方式都不会导致常规的暂停按钮事件

  • 如果您试图确定视频何时暂停,则可以通过键值观察播放机的“速率”属性(速率也可能因其他原因更改为零,例如,因为播放已结束)


当您将TapRecognitor添加到ViewController时,您可以请求接收
UIPressTypePlayPause
作为允许的类型。是的,我使用了NSNumber.FromLong((nint)Convert.ToInt32(UIPressType.PlayPause))命令来接收请求,但它不起作用。感谢您的建议,但我尝试了此解决方案,但它不起作用。只有当我使用avplayervewcontroller时才会发生这种情况。如果我使用UIViewController,那么它工作正常。感谢您的深入回答和建议。我们可以使用其他方法暂停/播放视频,但我尝试的是在按电视遥控器上的播放/暂停时播放/暂停视频。但另一个问题是它是如何在模拟器上正常工作的?我在模拟器上正确地获取事件。如果您对此有什么解决方案,请帮助我,这样我就可以实现从remote本身暂停/播放视频。如果我们谈论其他苹果电视应用程序,如Netflix、Amazon Prime和HotStare,它们使用的是相同的AVPlayerController,它们可以使用remote的“播放/暂停”按钮播放和暂停视频。因此,我认为必须有一个解决办法。请帮助我。AvPlayServiceController代表客户端处理播放/暂停按钮。这些应用程序中没有一个能处理暂停的特殊功能。如果你认为你发现了一个bug,你可能需要提交一个雷达文件()。首先复制错误,然后捕获雷达的sysdiagnose,如中所述(这有助于苹果工程师在无法轻松复制您的问题时追踪问题)…例如,如果您在AvPlayServiceWController的根视图上设置了“userInteractionDisabled”属性,或者,如果您正在播放一条可搜索范围很小的直播流。但是,我假设所有其他用户界面操作都正常工作(例如,点击以显示传输栏,单击Siri Remote touch界面以切换播放)。特别是,单击Siri Remote的触摸屏是否会切换播放?如果没有,则可能是您禁用了控件/用户交互,或者AvPlayServiceWController的视图没有焦点。您在此处包含的示例代码看起来没有问题(并且视频不是实时流),因此如果您的应用程序中有错误,则不在此文件中。警告:我并没有建立/运行xamarin项目,所以我只是关注源代码。最后,关于模拟器的区别:模拟器尽最大努力模拟设备行为,但在极少数情况下,它并不完全匹配;这种差异是模拟器中的错误(当模拟器和设备之间的行为存在差异时,它是模拟器中的错误)。