コード例 #1
0
 public GoogleCastManager()
 {
     sessionManager             = CastContext.SharedInstance.SessionManager;
     xamaSessionManagerListener = new XamSessionManagerListener(this);
     sessionManager.AddListener(xamaSessionManagerListener);
     castMediaController          = new UIMediaController();
     castMediaController.Delegate = new XamMediaControllerDelegate(this);
 }
コード例 #2
0
 public virtual void RemoveListener(SessionManagerListener oldListener)
 {
     SharingClientPINVOKE.SessionManager_RemoveListener(swigCPtr, SessionManagerListener.getCPtr(oldListener));
 }
コード例 #3
0
 public virtual void AddListener(SessionManagerListener newListener)
 {
     SharingClientPINVOKE.SessionManager_AddListener(swigCPtr, SessionManagerListener.getCPtr(newListener));
 }
コード例 #4
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SessionManagerListener obj) {
   return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
 }
コード例 #5
0
 public virtual void RemoveListener(SessionManagerListener oldListener) {
   SharingClientPINVOKE.SessionManager_RemoveListener(swigCPtr, SessionManagerListener.getCPtr(oldListener));
 }
コード例 #6
0
 public virtual void AddListener(SessionManagerListener newListener) {
   SharingClientPINVOKE.SessionManager_AddListener(swigCPtr, SessionManagerListener.getCPtr(newListener));
 }
コード例 #7
0
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);



            if (e.OldElement != null || Element == null)
            {
                return;
            }

            try
            {
                SetupChromecastThings();
                SetupUserInterface();
                StartVideoPlayback();
                currentPage = Element;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine($"\t\t\tERROR: {ex.Message}");
            }

            void StartVideoPlayback()
            {
                var hasConnection = sessionManager.HasConnectedSession;

                if (hasConnection)
                {
                    mLocation = PlaybackLocation.REMOTE;
                    SwitchToRemotePlayback();
                    ClosePage();
                }

                if (mLocation == PlaybackLocation.LOCAL)
                {
                    avp.Play();
                }
            }

            void SetupUserInterface()
            {
                url          = NSUrl.FromString(mediaInfo.SourceURL);
                avp          = new AVPlayer(url);
                avpvc        = new AVPlayerViewController();
                avpvc.Player = avp;
                AddChildViewController(avpvc);
                avpvc.View.Frame            = new CGRect(0, 100, 375, 300);
                avpvc.ShowsPlaybackControls = true;
                View.AddSubview(avpvc.View);

                var castButton = new UICastButton(new CGRect(50, 20, 24, 24));

                View.AddSubview(castButton);
            }

            void SetupChromecastThings()
            {
                //setup Cast session manager
                sessionManager             = CastContext.SharedInstance.SessionManager;
                xamaSessionManagerListener = new XamSessionManagerListener(this);
                sessionManager.AddListener(xamaSessionManagerListener);

                //castMediaController
                castMediaController          = new UIMediaController();
                castMediaController.Delegate = new XamMediaControllerDelegate();
            }
        }
コード例 #8
0
 public static extern void SessionManagerListener_director_connect(global::System.Runtime.InteropServices.HandleRef jarg1, SessionManagerListener.SwigDelegateSessionManagerListener_0 delegate0, SessionManagerListener.SwigDelegateSessionManagerListener_1 delegate1, SessionManagerListener.SwigDelegateSessionManagerListener_2 delegate2, SessionManagerListener.SwigDelegateSessionManagerListener_3 delegate3, SessionManagerListener.SwigDelegateSessionManagerListener_4 delegate4, SessionManagerListener.SwigDelegateSessionManagerListener_5 delegate5, SessionManagerListener.SwigDelegateSessionManagerListener_6 delegate6, SessionManagerListener.SwigDelegateSessionManagerListener_7 delegate7, SessionManagerListener.SwigDelegateSessionManagerListener_8 delegate8);
コード例 #9
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SessionManagerListener obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }