0
votes

I've been working on this Xamarin Forms mobile application and I've been loving it but it's a media player application and the native embedding for the platform specific video player doesn't work. After much debugging I was able to get the audio playing but no video would show up. I think this has to do with the views just not being swapped out appropriately. Unfortunately there isn't much material on how to effectively switch from a Xamarin Forms view to a native view (to see the video) through Xamarin Forms. Any help is appreciated thank you !

I was able to get iOS videos working by using the Xamarin Forms messaging service to Appdelegate class and built the AVPlayer class there. Works great.

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;
}

However.. Getting this to work with Android is a whole different animal since I have to have deal with .axml layouts I believe.. Any help with this would be greatly appreciate.. Thanks so much guys.

1
Can you please post appropriate parts of the code you have, and any plugins you are using (if any) - Adam

1 Answers

0
votes

So I figured out an implementation using Native Views, an alternative to Custom Renderers. Such a more stream lined process.