【问题标题】:Xamarin Forms: Native Embedding Android and iOS Video PlayerXamarin Forms:原生嵌入 Android 和 iOS 视频播放器
【发布时间】:2017-05-26 22:40:07
【问题描述】:

我一直在开发这个 Xamarin Forms 移动应用程序,我一直很喜欢它,但它是一个媒体播放器应用程序,平台特定视频播放器的本机嵌入不起作用。经过多次调试,我能够播放音频,但没有视频显示。我认为这与视图没有被适当地交换有关。不幸的是,关于如何通过 Xamarin Forms 有效地从 Xamarin Forms 视图切换到本机视图(查看视频)的材料并不多。任何帮助表示感谢,谢谢!

通过使用 Xamarin Forms 消息服务到 Appdelegate 类并在那里构建 AVPlayer 类,我能够让 iOS 视频正常工作。效果很好。

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 布局,我相信.. 对此的任何帮助将不胜感激.. 非常感谢大家。

【问题讨论】:

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


【解决方案1】:

所以我想出了一个使用原生视图的实现,它是自定义渲染器的替代方案。这样一个更流线型的过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 2016-02-04
    • 1970-01-01
    • 2013-09-06
    • 2012-11-02
    • 2011-10-01
    • 1970-01-01
    • 2015-10-09
    相关资源
    最近更新 更多