lundi 16 mars 2015

Wrong Video Played by MpMoviePlayerViewController in xamarin


Vote count:

0




I am using two MpMoviePlayerViewController objects in a single screen. I have two play buttons to play them and i only allow playback of one video at a time. Here's the description of the problem i am facing.


1) I have 2 objects of MpMoviePlayerViewController, moviePlayer1 & moviePlayer2, each of them is assigned a video url(hosted in Kaltura),say url1 & url2


2) Play the moviePlayer2,i can make it fullscreen in portrait and landscape, it plays fine.


3) The problem occurs when i try to Play the moviePlayer1 in fullscreen, everything goes black, after sometime i can hear the video being played(can't see anything), but it's the video which is assigned to moviePlayer1.



using System;
using Foundation;
using UIKit;
using CoreGraphics;
using System.CodeDom.Compiler;

using System.Net.Http;
using System.Threading.Tasks;
using MonoTouch.Dialog;
using MediaPlayer;
using CommonLib.Data;
using CommonLib;
using System.Collections;
using System.Collections.Generic;
using RestSharp;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using XibFree;

namespace VirtualMentorDemo2
{
partial class CompletedChallengeController : UIViewController
{
public UIScrollView ChallengeScrollView{ get; set; }
public UIView challengeContainerSubpart4View{ get; set; }

MPMoviePlayerViewController moviePlayer{ get; set; }
MPMoviePlayerViewController moviePlayer2{ get; set; }

public UIButton btnPlayRecordedVideo = null;
UIButton btnPlayChallengeRespVideo { get; set; }
UIButton btnPlayChallengeVideo{ get; set; }
UIView TopBarContainerView{ get; set; }
UIView ContainerView{ get; set; }
UIImageView bg{ get; set; }
UILabel lblMessage{ get; set; }
bool IsIPhone5 { get; set; }

NSObject PlayBackFinishNotif1{ get; set; }
NSObject EnterFullScreenNotif1{ get; set; }
NSObject ExitFullScreenNotif1{ get; set; }
NSObject PlayBackFinishNotif2{ get; set; }
NSObject EnterFullScreenNotif2{ get; set; }
NSObject ExitFullScreenNotif2{ get; set; }
bool IsPlayingFullScreen;

public ChallengeReview ChallengeToRevisit{ get; set; }



public CompletedChallengeController (IntPtr handle) : base (handle)
{
}


public override void ViewDidLoad ()
{
base.ViewDidLoad ();
UIApplication.SharedApplication.SetStatusBarHidden (true, false);
//this.RestrictRotation(true);
InitTopBar ();
bg = new UIImageView (new CGRect (0, 68, View.Frame.Width, View.Frame.Height - 68));
bg.Image = UIImage.FromBundle("challenge-orange-background");
View.Add (bg);
IsIPhone5 = UIStyles.IsIphone5;
InitScrollView ();
LoadContent ();
}


public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}

/*
public override bool ShouldAutorotate()
{
return false;
}

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
//return UIInterfaceOrientationMask.Portrait;
//if (this.moviePlayer!=null && this.moviePlayer.Fullscreen && (this.moviePlayer.PlaybackState == MPMoviePlaybackState.Playing || this.moviePlayer.PlaybackState == MPMoviePlaybackState.Paused)) {
if(IsPlayingFullScreen && this.moviePlayer!=null){
return UIInterfaceOrientationMask.Landscape;
} else {
return UIInterfaceOrientationMask.Portrait;
}
}

public override UIInterfaceOrientation PreferredInterfaceOrientationForPresentation ()
{
//if (this.moviePlayer!=null && this.moviePlayer.Fullscreen && this.moviePlayer.Fullscreen && (this.moviePlayer.PlaybackState == MPMoviePlaybackState.Playing || this.moviePlayer.PlaybackState == MPMoviePlaybackState.Paused)) {
if(IsPlayingFullScreen && this.moviePlayer!=null){
return (UIInterfaceOrientation.LandscapeLeft|UIInterfaceOrientation.LandscapeRight);
} else {
return UIInterfaceOrientation.Portrait;
}

}

void RestrictRotation(bool restriction)
{
AppDelegate app =(AppDelegate)UIApplication.SharedApplication.Delegate;
app.RestrictRotation = restriction;
} */

public override void ViewWillAppear (bool animated)
{
base.ViewWillAppear (animated);

}

public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
}

public override void ViewWillDisappear (bool animated)
{
base.ViewWillDisappear (animated);

/*if (this.moviePlayer != null ) {
NSNotificationCenter.DefaultCenter.RemoveObserver (EnterFullScreenNotif1);
NSNotificationCenter.DefaultCenter.RemoveObserver (ExitFullScreenNotif1);
NSNotificationCenter.DefaultCenter.RemoveObserver (PlayBackFinishNotif1);

}

if (this.moviePlayer2 != null ) {
NSNotificationCenter.DefaultCenter.RemoveObserver (EnterFullScreenNotif2);
NSNotificationCenter.DefaultCenter.RemoveObserver (ExitFullScreenNotif2);
NSNotificationCenter.DefaultCenter.RemoveObserver (PlayBackFinishNotif2);

}*/
}

private void HandleDidExitFullScreen(object ss,MPMoviePlayerFullScreenEventArgs ee){
IsPlayingFullScreen = false;
if (this.moviePlayer != null) {
this.moviePlayer.MoviePlayer.Pause ();
Utils.SetFullScreenFlag(false);
this.moviePlayer.MoviePlayer.Play ();
}
}

//private void HandleDidEnterFullScreen(NSNotification ee){
private void HandleDidEnterFullScreen(object ss,MPMoviePlayerFullScreenEventArgs ee){
IsPlayingFullScreen = true;
if (this.moviePlayer != null) {
this.moviePlayer.MoviePlayer.Pause ();
Utils.SetFullScreenFlag (true);
this.moviePlayer.MoviePlayer.Play ();
}
}

//private void HandleMoviePlayerStoppedPlaying(NSNotification ee){ //MPMoviePlayerFinishedEventArgs ee){
private void HandleMoviePlayerStoppedPlaying(object ss,MPMoviePlayerFinishedEventArgs ee){ //MPMoviePlayerFinishedEventArgs ee){
if (this.moviePlayer != null)
{
if (ee.FinishReason == MPMovieFinishReason.PlaybackEnded || ee.FinishReason == MPMovieFinishReason.UserExited )
{

//do it here
}
if (ee.FinishReason == MPMovieFinishReason.PlaybackError) {
InvokeOnMainThread(()=>{
//btnPlayChallengeVideo.Hidden = false;
if(this.moviePlayer.MoviePlayer.Fullscreen == true){
this.moviePlayer.MoviePlayer.SetFullscreen(false,true);
this.moviePlayer.View.Hidden = true;
}
});
}
}
}

private void HandleDidExitFullScreen2(object ss,MPMoviePlayerFullScreenEventArgs ee){
IsPlayingFullScreen = false;

if (this.moviePlayer2 != null) {
Utils.SetFullScreenFlag (false);
this.moviePlayer2.MoviePlayer.Pause ();
this.moviePlayer2.MoviePlayer.ScalingMode = MPMovieScalingMode.AspectFit;
this.moviePlayer2.MoviePlayer.Play ();
}
}

private void HandleDidEnterFullScreen2(object ss,MPMoviePlayerFullScreenEventArgs ee){
IsPlayingFullScreen = true;
if (this.moviePlayer2 != null) {
Utils.SetFullScreenFlag (true);
this.moviePlayer2.MoviePlayer.Pause ();
this.moviePlayer2.MoviePlayer.ScalingMode = MPMovieScalingMode.AspectFit;
this.moviePlayer2.MoviePlayer.Play ();
}
}

private void HandleMoviePlayerStoppedPlaying2(object ss,MPMoviePlayerFinishedEventArgs ee){ //MPMoviePlayerFinishedEventArgs ee){
if (this.moviePlayer2 != null) {

if (ee.FinishReason == MPMovieFinishReason.PlaybackEnded || ee.FinishReason == MPMovieFinishReason.UserExited) {

}
if (ee.FinishReason == MPMovieFinishReason.PlaybackError) {
InvokeOnMainThread(()=>{
//btnPlayChallengeVideo.Hidden = false;
if(this.moviePlayer2.MoviePlayer.Fullscreen == true){
this.moviePlayer2.MoviePlayer.SetFullscreen(false,true);
this.moviePlayer2.View.Hidden = true;
}
});
}
}
}

public override void ViewDidDisappear (bool animated)
{
base.ViewDidDisappear (animated);
}

private void InitScrollView(){
InvokeOnMainThread (() => {
ChallengeScrollView = new UIScrollView (new CGRect (AppConstants.ZeroVal, 68, View.Frame.Width, View.Frame.Height - 68));
ChallengeScrollView.ShowsHorizontalScrollIndicator = false;
ChallengeScrollView.ShowsVerticalScrollIndicator = false;
ChallengeScrollView.DirectionalLockEnabled = true;
//ChallengeScrollView.PagingEnabled = true;
ChallengeScrollView.ScrollEnabled = true;
ChallengeScrollView.Scrolled += ScrolledEvent;
//ChallengeScrollView.DecelerationEnded += ScrollEnded;
View.Add (ChallengeScrollView);
} );
}
private void ScrolledEvent (object sender, EventArgs e)
{
}
private void ScrollEnded (object sender, EventArgs e)
{
//Console.WriteLine ("contentHeight - "+ ChallengeScrollView.ContentSize.Height);
}
private void InitTopBar(){
InvokeOnMainThread (() => {
TopBarContainerView = new UIView (new CGRect (AppConstants.ZeroVal, AppConstants.ZeroVal, View.Frame.Width, 40));
TopBarContainerView.BackgroundColor = UIColor.FromRGB (255, 255, 255);
View.Add (TopBarContainerView);

UIButton btnCloseView = new UIButton (new CGRect (10, 10, 30, 30));
btnCloseView.BackgroundColor = UIColor.Clear;
btnCloseView.SetBackgroundImage (UIImage.FromBundle ("exit-dark"), UIControlState.Normal);
TopBarContainerView.Add (btnCloseView);

btnCloseView.TouchUpInside += ((object sender, EventArgs e) => {
InvokeOnMainThread (() => {
if (this.moviePlayer != null){
this.moviePlayer.MoviePlayer.Stop();
}
if (this.moviePlayer2 != null){
this.moviePlayer2.MoviePlayer.Stop();
}
//this.moviePlayer2.Stop();
//this.moviePlayer.Dispose();
//this.moviePlayer2.Dispose();

this.PresentingViewController.DismissViewController (true, null);
} );

} );
/*
UILabel lblTitle = new UILabel (new RectangleF (btnCloseView.Frame.Width + btnCloseView.Frame.Left, 5, View.Frame.Width - 40, 30));
lblTitle.Text = "CHALLENGE RESPONSE";
lblTitle.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 21);
lblTitle.TextAlignment = UITextAlignment.Center;
TopBarContainerView.Add (lblTitle);*/
} );
}


private void LoadContent(){
InvokeOnMainThread (() => {

ContainerView = new UIView ();
CGRect ContainerViewRect = new CGRect ();
ContainerViewRect.X = AppConstants.ZeroVal;
ContainerViewRect.Y = AppConstants.ZeroVal;
nfloat contentHeight = createChallengeScreen(ContainerView);
ContainerViewRect.Width = View.Frame.Width;
ContainerViewRect.Height = contentHeight;
ContainerView.Frame = ContainerViewRect;

ChallengeScrollView.ContentSize = new CGSize(ContainerViewRect.Width,ContainerViewRect.Height);

ChallengeScrollView.Add(ContainerView);

} );

}

private nfloat createChallengeScreen (UIView containerView)//, RectangleF containerViewRect)
{

nfloat contentHeight = 0.0f;
//subitem1 user info 190
CGRect challengeContainerSubpart1ViewRect = new CGRect (AppConstants.ZeroVal, AppConstants.ZeroVal, ChallengeScrollView.Frame.Width, 230);
UIView challengeContainerSubpart1View = new UIView (challengeContainerSubpart1ViewRect);
challengeContainerSubpart1View.BackgroundColor = UIColor.White;
//containerView.AddSubview (ChildScrollView1);
containerView.AddSubview (challengeContainerSubpart1View);
contentHeight += challengeContainerSubpart1ViewRect.Height;//Setting content height of scrollview. Adding height of all container views.

UILabel lblChallengeTitleText = new UILabel (new CGRect (0, 0, View.Frame.Width, 60));
lblChallengeTitleText.TextColor = UIStyles.TextFeedback;
lblChallengeTitleText.BackgroundColor = UIColor.White;
lblChallengeTitleText.Text = ChallengeToRevisit.ChallengeTitle;//AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Title;
lblChallengeTitleText.Lines = 0;
lblChallengeTitleText.TextAlignment = UITextAlignment.Center;
lblChallengeTitleText.LineBreakMode = UILineBreakMode.WordWrap;
lblChallengeTitleText.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 19);
challengeContainerSubpart1View.AddSubview (lblChallengeTitleText);

//todo set location of YOU
UIImageView youImage = new UIImageView (new CGRect (74, 65, 32, 32));
youImage.Image = UIImage.FromBundle ("you");
challengeContainerSubpart1View.Add (youImage);

UIImageView dummy1Image = new UIImageView (new CGRect (60, 105, 60, 60));
Utils.SetImageForImageView (AppData.Instance.CurrentUser.Picture, dummy1Image, 2);
challengeContainerSubpart1View.Add (dummy1Image);

UILabel lblDummy1Name = new UILabel (new CGRect (50, 170, 80, 40));
lblDummy1Name.TextColor = UIColor.LightGray;
lblDummy1Name.TextAlignment = UITextAlignment.Center;
lblDummy1Name.Lines = 2;
lblDummy1Name.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 16);
/*lblDummy1Name.Text = (!string.IsNullOrEmpty(AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee1Name) &&
!string.IsNullOrWhiteSpace(AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee1Name)) ?
AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee1Name.Replace("[Name]", AppData.Instance.CurrentUser.FirstName) : string.Empty;*/


lblDummy1Name.Text = ChallengeToRevisit.Designation1;//AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Designation1;
challengeContainerSubpart1View.Add (lblDummy1Name);

UILabel joeName = new UILabel (new CGRect (View.Frame.Width - 130, 60, 80, 42));
joeName.TextColor = UIColor.LightGray;
joeName.TextAlignment = UITextAlignment.Center;
joeName.Lines = 2;
joeName.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 16);
joeName.Text = ChallengeToRevisit.Silhoutee2Name;//AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee2Name;
challengeContainerSubpart1View.Add (joeName);


UILabel lblDummy2Name = new UILabel (new CGRect (190, 170, 80, 40));
lblDummy2Name.TextColor = UIColor.LightGray;
lblDummy2Name.TextAlignment = UITextAlignment.Center;
lblDummy2Name.Lines = 2;
lblDummy2Name.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 16);
lblDummy2Name.Text = ChallengeToRevisit.Designation2; //AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Designation2;
challengeContainerSubpart1View.Add (lblDummy2Name);
/*lblDummy2Name.Text = (!string.IsNullOrEmpty(AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee2Name) &&
!string.IsNullOrWhiteSpace(AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee2Name)) ?
AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Silhoutee2Name : "";
challengeContainerSubpart1View.Add (lblDummy1Name);;//"Joe";
*/

UIImageView dummy2Image = new UIImageView (new CGRect (200, 105, 60, 60));
dummy2Image.Image = UIImage.FromBundle ("Unisex-Light-Gray");
challengeContainerSubpart1View.Add (dummy2Image);



//subitem2 ------------------------------------------------------------------------ desc
CGRect challengeContainerSubpart2ViewRect = new CGRect (AppConstants.ZeroVal, contentHeight, ChallengeScrollView.Frame.Width, IsIPhone5 ? 468 - 190 : 380 - 190);//950
UIView challengeContainerSubpart2View = new UIView (challengeContainerSubpart2ViewRect);
challengeContainerSubpart2View.BackgroundColor = UIColor.Clear;
containerView.AddSubview (challengeContainerSubpart2View);

string completeText = "abcd";
if (ChallengeToRevisit != null) {
completeText = ChallengeToRevisit.Description;//AppData.Instance.CurrentChallenge.UserChallenge.Challenge.Description;
completeText = Utils.FormatStringForGender (completeText, AppData.Instance.CurrentUser);
}

nfloat lbl1Height;
UILabel txtDesc = CreateChallengeTextLabel (completeText, out lbl1Height);
challengeContainerSubpart2View.Add (txtDesc);
//challengeContainerSubpart2ViewRect.Height = lbl1Height;
contentHeight += lbl1Height + 210;//challengeContainerSubpart2ViewRect.Height;

//watch arrow and text
UILabel lblWatchTheVideo = new UILabel (new CGRect (AppConstants.ZeroVal, lbl1Height + 130, ChallengeScrollView.Frame.Width, 20));
lblWatchTheVideo.Text = "Watch the video";
lblWatchTheVideo.TextAlignment = UITextAlignment.Center;
lblWatchTheVideo.TextColor = UIColor.White;
lblWatchTheVideo.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 17);
challengeContainerSubpart2View.Add (lblWatchTheVideo);

UIImageView imgWatchArrow = new UIImageView (new CGRect (AppConstants.ZeroVal, lblWatchTheVideo.Frame.Top + 30, ChallengeScrollView.Frame.Width, 26));
imgWatchArrow.Image = UIImage.FromBundle ("down-arrow-white");
challengeContainerSubpart2View.Add (imgWatchArrow);

//subitem3 380------------------------------------------------------------------------ video section
CGRect challengeContainerSubpart3ViewRect = new CGRect (AppConstants.ZeroVal, contentHeight, ChallengeScrollView.Frame.Width, IsIPhone5 ? 468 : 380);
UIView challengeContainerSubpart3View = new UIView (challengeContainerSubpart3ViewRect);
containerView.Add (challengeContainerSubpart3View);
contentHeight += challengeContainerSubpart3ViewRect.Height;

UIView videoBg = new UIView (new CGRect (AppConstants.ZeroVal, AppConstants.ZeroVal, ChallengeScrollView.Frame.Width, 190));
videoBg.BackgroundColor = UIColor.Black;
challengeContainerSubpart3View.Add (videoBg);

this.moviePlayer = new MPMoviePlayerViewController ();
this.moviePlayer.View.Frame = new CGRect (AppConstants.ZeroVal, AppConstants.ZeroVal, ChallengeScrollView.Frame.Width, 190);
this.moviePlayer.View.BackgroundColor = UIColor.Black;
this.moviePlayer.MoviePlayer.ControlStyle = MPMovieControlStyle.Default;
this.moviePlayer.MoviePlayer.ContentUrl = new NSUrl (ChallengeToRevisit.VideoUrl);
this.moviePlayer.MoviePlayer.ShouldAutoplay = false;
this.moviePlayer.MoviePlayer.PrepareToPlay ();
this.moviePlayer.View.Hidden = true;
this.moviePlayer.MoviePlayer.ScalingMode = MPMovieScalingMode.AspectFit;
challengeContainerSubpart3View.Add (this.moviePlayer.View);
PlayBackFinishNotif1 = MPMoviePlayerController.Notifications.ObservePlaybackDidFinish(HandleMoviePlayerStoppedPlaying);
ExitFullScreenNotif1 = MPMoviePlayerController.Notifications.ObserveWillExitFullscreen (HandleDidExitFullScreen);
//EnterFullScreenNotif = MPMoviePlayerController.Notifications.ObserveWillEnterFullscreen(HandleDidEnterFullScreen);
EnterFullScreenNotif1 = MPMoviePlayerController.Notifications.ObserveWillEnterFullscreen (HandleDidEnterFullScreen);
//(EventHandler<MPMoviePlayerFullScreenEventArgs>) HandleDidEnterFullScreen);


btnPlayChallengeVideo = new UIButton (new CGRect (130.0f, 65.0f, 60.0f, 60.0f));
btnPlayChallengeVideo.SetBackgroundImage (UIImage.FromBundle ("play-button"), UIControlState.Normal);
challengeContainerSubpart3View.Add (btnPlayChallengeVideo);

btnPlayChallengeVideo.TouchUpInside += ((object fsender, EventArgs fevt) => {

InvokeOnMainThread (() => {
this.moviePlayer2.MoviePlayer.Stop ();
btnPlayRecordedVideo.Hidden = false;
this.moviePlayer2.View.Hidden = true;

btnPlayChallengeVideo.Hidden = true;
this.moviePlayer.View.Hidden = false;
this.moviePlayer.MoviePlayer.Play ();
});
});

//watch arrow and text

UILabel lblWatchTheVideo2 = new UILabel (new CGRect (AppConstants.ZeroVal,IsIPhone5 ? 468 - 90 : 380 - 90 , ChallengeScrollView.Frame.Width, 20));
lblWatchTheVideo2.Text = "Watch your response";
lblWatchTheVideo2.TextAlignment = UITextAlignment.Center;
lblWatchTheVideo2.TextColor = UIColor.White;
lblWatchTheVideo2.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 17);
challengeContainerSubpart3View.Add (lblWatchTheVideo2);

UIImageView imgWatchArrow2 = new UIImageView (new CGRect (AppConstants.ZeroVal, IsIPhone5 ? 468 - 60 : 380 - 60, ChallengeScrollView.Frame.Width, 26));
imgWatchArrow2.Image = UIImage.FromBundle ("down-arrow-white");
challengeContainerSubpart3View.Add (imgWatchArrow2);


//subitem4 380 ------------------------------------------------------------------------ recorded video section
CGRect challengeContainerSubpart4ViewRect = new CGRect (AppConstants.ZeroVal, contentHeight, ChallengeScrollView.Frame.Width, IsIPhone5 ? 468 : 380);
challengeContainerSubpart4View = new UIView (challengeContainerSubpart4ViewRect);
containerView.AddSubview (challengeContainerSubpart4View);
contentHeight += challengeContainerSubpart4ViewRect.Height;

UIView recordedVideoBg = new UIView (new CGRect (AppConstants.ZeroVal, AppConstants.ZeroVal, ChallengeScrollView.Frame.Width, 190));
recordedVideoBg.BackgroundColor = UIColor.Black;
challengeContainerSubpart4View.Add (recordedVideoBg); //challengeContainerSubpart4ViewRect.subview index 0


string RecordedVideoUrl = ChallengeToRevisit.ResponseVideoUrl;
this.moviePlayer2 = new MPMoviePlayerViewController ();
this.moviePlayer2.View.Frame = new CGRect (AppConstants.ZeroVal, AppConstants.ZeroVal, ChallengeScrollView.Frame.Width, 190);
this.moviePlayer2.View.BackgroundColor = UIColor.FromRGB (231, 164, 60);
this.moviePlayer2.MoviePlayer.ControlStyle = MPMovieControlStyle.Default;
this.moviePlayer2.MoviePlayer.SourceType = MPMovieSourceType.Streaming;
if (!string.IsNullOrEmpty (RecordedVideoUrl) && !string.IsNullOrWhiteSpace (RecordedVideoUrl)) {
this.moviePlayer2.MoviePlayer.ContentUrl = new NSUrl (RecordedVideoUrl);
}
this.moviePlayer2.MoviePlayer.ShouldAutoplay = false;
this.moviePlayer2.MoviePlayer.PrepareToPlay ();
this.moviePlayer2.MoviePlayer.ScalingMode = MPMovieScalingMode.AspectFit;
this.moviePlayer2.View.Hidden = true;
challengeContainerSubpart4View.Add (this.moviePlayer2.View);//challengeContainerSubpart4ViewRect.subview index 3

PlayBackFinishNotif2 = MPMoviePlayerController.Notifications.ObservePlaybackDidFinish(HandleMoviePlayerStoppedPlaying2);
ExitFullScreenNotif2 = MPMoviePlayerController.Notifications.ObserveWillExitFullscreen (HandleDidExitFullScreen2);
//EnterFullScreenNotif = MPMoviePlayerController.Notifications.ObserveWillEnterFullscreen(HandleDidEnterFullScreen);
EnterFullScreenNotif2 = MPMoviePlayerController.Notifications.ObserveWillEnterFullscreen( HandleDidEnterFullScreen2);
//(EventHandler<MPMoviePlayerFullScreenEventArgs>) HandleDidEnterFullScreen2);


btnPlayRecordedVideo = new UIButton (new CGRect (130.0f, 52.0f, 60.0f, 60.0f));
btnPlayRecordedVideo.SetBackgroundImage (UIImage.FromBundle ("play-button"), UIControlState.Normal);
btnPlayRecordedVideo.Hidden = false;
challengeContainerSubpart4View.Add (btnPlayRecordedVideo);//challengeContainerSubpart4ViewRect.subview index

btnPlayRecordedVideo.TouchUpInside += ((object fsender, EventArgs fevt) => {
InvokeOnMainThread (() => {
this.moviePlayer.MoviePlayer.Stop ();
btnPlayChallengeVideo.Hidden = false;
this.moviePlayer.View.Hidden = true;

btnPlayRecordedVideo.Hidden = true;
this.moviePlayer2.View.Hidden = false;
this.moviePlayer2.MoviePlayer.Play ();
});
});

lblMessage = new UILabel (new CGRect (60f, 67f, 160f, 30f));
if (string.IsNullOrEmpty (RecordedVideoUrl) || string.IsNullOrWhiteSpace (RecordedVideoUrl)) {

btnPlayRecordedVideo.Hidden = true;
lblMessage.Text = "Video is being processed.";
lblMessage.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular,14);
lblMessage.TextAlignment = UITextAlignment.Center;
lblMessage.TextColor = UIStyles.BgWhite;
lblMessage.Hidden = false;

} else {
lblMessage.Hidden = true;
}
challengeContainerSubpart4View.Add (lblMessage);

return contentHeight;
}


private UILabel CreateChallengeTextLabel(string text, out nfloat feedbackPage1Height)
{
UILabel txtFeedbackDesc = new UILabel ();//new RectangleF (0.1f * ChallengeScrollView.Frame.Width, 30.0f, 0.8f * ChallengeScrollView.Frame.Width, 920.0f)
UIStringAttributes strAttr = new UIStringAttributes () {
Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 17),
ForegroundColor = UIColor.White,
ParagraphStyle = new NSMutableParagraphStyle() { LineSpacing = 4.0f }
} ;
var attrText = new NSMutableAttributedString (text);
attrText.AddAttributes (strAttr, new NSRange (0, text.Length));
txtFeedbackDesc.AttributedText = attrText;

txtFeedbackDesc.TextColor = UIColor.White;
txtFeedbackDesc.BackgroundColor = UIColor.Clear;
txtFeedbackDesc.TextAlignment = UITextAlignment.Center;
txtFeedbackDesc.Font = UIStyles.GetTextFont (UIStyles.FontType.Regular, 17);
txtFeedbackDesc.Lines = 0;

feedbackPage1Height = ComputeSize.MeasureHeight (txtFeedbackDesc, 0.9f * ChallengeScrollView.Frame.Width);
Console.WriteLine ("height - - - - - - - - - - - -" + feedbackPage1Height);
txtFeedbackDesc.Frame = new CGRect (0.05f * ChallengeScrollView.Frame.Width, 30.0f, 0.9f * ChallengeScrollView.Frame.Width, feedbackPage1Height);

return txtFeedbackDesc;
}
}
}


asked 49 secs ago







Wrong Video Played by MpMoviePlayerViewController in xamarin

Aucun commentaire:

Enregistrer un commentaire