public void Setup(CustomVideoLayer layer) { if (!IsSupported() || IsSetep) { return; } if (layer?.VideoLayer != null) { controller = new AVPictureInPictureController(layer.VideoLayer); controller.Delegate = this; } layer.VideoLayerChanged += (AVPlayerLayer obj) => { if (!IsSupported()) { return; } bool isActive = controller?.PictureInPictureActive ?? false; if (isActive) { controller?.StopPictureInPicture(); } controller = new AVPictureInPictureController(layer.VideoLayer); controller.Delegate = this; if (isActive) { controller.StartPictureInPicture(); } }; IsSetep = true; }
public void FailedToStartPictureInPicture(AVPictureInPictureController pictureInPictureController, NSError error) { // Picture in picture failed to start with an error, restore UI to continue // inline playback. Hide the active label and show the toolbar. PictureInPictureActiveLabel.Hidden = true; Toolbar.Hidden = false; HandleError(error); }
public void DidStartPictureInPicture(AVPictureInPictureController pictureInPictureController) { // If your application contains a video library or other interesting views, // this delegate callback can be used to dismiss player view controller // and to present the user with a selection of videos to play next. PictureInPictureActiveLabel.Hidden = false; Toolbar.Hidden = true; }
void SetupPictureInPicturePlayback() { // Check to make sure Picture in Picture is supported for the current // setup (application configuration, hardware, etc.). if (AVPictureInPictureController.IsPictureInPictureSupported) { // Create `AVPictureInPictureController` with our `PlayerLayer`. // Set this as Delegate to receive callbacks for picture in picture events. // Add observer to be notified when PictureInPicturePossible changes value, // so that we can enable `PictureInPictureButton`. pictureInPictureController = new AVPictureInPictureController(PlayerView.PlayerLayer); pictureInPictureController.Delegate = this; pictureInPictureController.AddObserver(this, "pictureInPicturePossible", NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, IntPtr.Zero); } else { PictureInPictureButton.Enabled = false; } }
public override void PictureInPictureController(AVPictureInPictureController pictureInPictureController, NSError error) { Debug.WriteLine($"failedToStartPictureInPictureWithError : {error.LocalizedDescription}"); }
public override void PictureInPictureControllerWillStopPictureInPicture(AVPictureInPictureController pictureInPictureController) { Debug.WriteLine("pictureInPictureControllerWillStopPicture"); }
public override void PictureInPictureControllerDidStartPictureInPicture(AVPictureInPictureController pictureInPictureController) { Debug.WriteLine("pictureInPictureControllerDidStartPicture"); }
public override void WillStartPictureInPicture(AVPictureInPictureController pictureInPictureController) { Console.WriteLine("WillStartPictureInPicture(pictureInPictureController)"); }
public override void FailedToStartPictureInPicture(AVPictureInPictureController pictureInPictureController, NSError error) { Console.WriteLine($"FailedToStartPictureInPicture(pictureInPictureController, {error.LocalizedDescription})"); }
public override void DidStopPictureInPicture(AVPictureInPictureController pictureInPictureController) { Console.WriteLine("DidStopPictureInPicture(pictureInPictureController)"); }
public void WillStopPictureInPicture(AVPictureInPictureController pictureInPictureController) { // Picture in picture mode will stop soon, hide the active label and show the toolbar. PictureInPictureActiveLabel.Hidden = true; Toolbar.Hidden = false; }
public void FailedToStartPictureInPicture (AVPictureInPictureController pictureInPictureController, NSError error) { // Picture in picture failed to start with an error, restore UI to continue // inline playback. Hide the active label and show the toolbar. PictureInPictureActiveLabel.Hidden = true; Toolbar.Hidden = false; HandleError (error); }
public void WillStopPictureInPicture (AVPictureInPictureController pictureInPictureController) { // Picture in picture mode will stop soon, hide the active label and show the toolbar. PictureInPictureActiveLabel.Hidden = true; Toolbar.Hidden = false; }
public void DidStartPictureInPicture (AVPictureInPictureController pictureInPictureController) { // If your application contains a video library or other interesting views, // this delegate callback can be used to dismiss player view controller // and to present the user with a selection of videos to play next. PictureInPictureActiveLabel.Hidden = false; Toolbar.Hidden = true; }
void SetupPictureInPicturePlayback () { // Check to make sure Picture in Picture is supported for the current // setup (application configuration, hardware, etc.). if (AVPictureInPictureController.IsPictureInPictureSupported) { // Create `AVPictureInPictureController` with our `PlayerLayer`. // Set this as Delegate to receive callbacks for picture in picture events. // Add observer to be notified when PictureInPicturePossible changes value, // so that we can enable `PictureInPictureButton`. pictureInPictureController = new AVPictureInPictureController (PlayerView.PlayerLayer); pictureInPictureController.Delegate = this; pictureInPictureController.AddObserver (this, "pictureInPicturePossible", NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Initial, IntPtr.Zero); } else { PictureInPictureButton.Enabled = false; } }