Xamarin表单:原生嵌入Android和iOS视频播放器

时间:2017-05-26 22:40:07

标签: xamarin xamarin.ios xamarin.android xamarin.forms

我一直在研究这款Xamarin Forms移动应用程序并且我一直很喜欢它,但它是一个媒体播放器应用程序,并且平台特定视频播放器的本机嵌入不起作用。经过大量调试后,我能够播放音频,但没有视频出现。我认为这与未正确交换的观点有关。遗憾的是,关于如何通过Xamarin Forms有效地从Xamarin Forms视图切换到本机视图(以观看视频)还有很多材料。任何帮助表示赞赏谢谢!

我能够通过使用Xamarin Forms消息服务到Appdelegate类来获得iOS视频,并在那里构建了AVPlayer类。效果很好。

playVideo.Clicked += (sender, e) => 
MessagingCenter.Send(this, "ShowVideoPlayer", new 
ShowVideoPlayerArguments(videoUrl));

Appdelegate.cs

MessagingCenter.Subscribe<VideoDetailPage, 
ShowVideoPlayerArguments>(this, "ShowVideoPlayer", 
HandleShowVideoPlayerMessage);

//messaging center class
private void HandleShowVideoPlayerMessage(Page page, 
ShowVideoPlayerArguments arguments)
{
var presentingViewController = GetMostPresentedViewController();
var url = NSUrl.FromString(arguments.Url);
var avp = new AVPlayer(url);
var avpvc = new AVPlayerViewController();
avpvc.Player = avp;
avp.Play();

presentingViewController.PresentViewController(avpvc, animated: true, 
completionHandler: null);
}

private UIViewController GetMostPresentedViewController()
{
var viewController = 
UIApplication.SharedApplication.KeyWindow.RootViewController;

while (viewController.PresentedViewController != null){
viewController = viewController.PresentedViewController;
}

return viewController;
}

然而..让这个与Android一起工作是一个完全不同的动物因为我必须处理.axml布局我相信..任何帮助都会非常感谢..非常感谢你们。

1 个答案:

答案 0 :(得分:0)

所以我想出了一个使用Native Views的实现,它是Custom Renderers的替代品。这样一个更加流线型的过程。