# PictureInPictureDelegate

Artifact: [androidx.core:core-pip](https://developer.android.com/jetpack/androidx/releases/core) [View Source](https://cs.android.com/search?q=file:androidx/core/pip/PictureInPictureDelegate.kt+class:androidx.core.pip.PictureInPictureDelegate) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/core#1.0.0-alpha04)

*** ** * ** ***


```
public class PictureInPictureDelegate
```

<br />

Known direct subclasses [BasicPictureInPicture](https://developer.android.com/reference/androidx/core/pip/BasicPictureInPicture)

|---|---|
| `https://developer.android.com/reference/androidx/core/pip/BasicPictureInPicture` | Basic Picture-in-Picture implementation. |

Known indirect subclasses [VideoPlaybackPictureInPicture](https://developer.android.com/reference/androidx/core/pip/VideoPlaybackPictureInPicture)

|---|---|
| `https://developer.android.com/reference/androidx/core/pip/VideoPlaybackPictureInPicture` | Picture-in-Picture implementation optimized for Video Playback applications. |

*** ** * ** ***

A delegate class to help set up PiP (Picture-in-Picture) functionalities on behalf of the given `https://developer.android.com/reference/androidx/core/app/PictureInPictureProvider` instance.

It's highly recommended to choose one of the implementations: `https://developer.android.com/reference/androidx/core/pip/BasicPictureInPicture`, `https://developer.android.com/reference/androidx/core/pip/VideoPlaybackPictureInPicture` instead of using this class directly.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.Event` Represents the PiP event emitted from the system. |
| `public interface https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener` Unified listener interface for `https://developer.android.com/reference/android/app/Activity.html#onPictureInPictureModeChanged(boolean)` and `https://developer.android.com/reference/android/app/Activity.html#onPictureInPictureUiStateChanged(android.app.PictureInPictureUiState)` callbacks. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate#PictureInPictureDelegate(androidx.core.app.PictureInPictureProvider)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/app/PictureInPictureProvider pictureInPictureProvider )` |

| ### Public methods |
|---|---|
| `final void` | `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate#addOnPictureInPictureEventListener(java.util.concurrent.Executor,androidx.core.pip.PictureInPictureDelegate.OnPictureInPictureEventListener)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener listener )` Adds `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener` for events sent from system. |
| `final void` | `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate#removeOnPictureInPictureEventListener(androidx.core.pip.PictureInPictureDelegate.OnPictureInPictureEventListener)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener listener )` Removes `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener` for events sent from system. |
| `final void` | `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate#setPictureInPictureParams(androidx.core.app.PictureInPictureParamsCompat)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/app/PictureInPictureParamsCompat pictureInPictureParamsCompat )` Sets the `https://developer.android.com/reference/androidx/core/app/PictureInPictureParamsCompat` instance for PiP. |

## Public constructors

### PictureInPictureDelegate

Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/core#1.0.0-alpha04)

```
public PictureInPictureDelegate(
    @NonNull PictureInPictureProvider pictureInPictureProvider
)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/app/PictureInPictureProvider pictureInPictureProvider` | `https://developer.android.com/reference/androidx/core/app/PictureInPictureProvider` instance that this delegate will call into for actual Picture-in-Picture functionalities. |

## Public methods

### addOnPictureInPictureEventListener

Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/core#1.0.0-alpha04)

```
public final void addOnPictureInPictureEventListener(
    @NonNull Executor executor,
    @NonNull PictureInPictureDelegate.OnPictureInPictureEventListener listener
)
```

Adds `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener` for events sent from system.

### removeOnPictureInPictureEventListener

Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/core#1.0.0-alpha04)

```
public final void removeOnPictureInPictureEventListener(
    @NonNull PictureInPictureDelegate.OnPictureInPictureEventListener listener
)
```

Removes `https://developer.android.com/reference/androidx/core/pip/PictureInPictureDelegate.OnPictureInPictureEventListener` for events sent from system.

### setPictureInPictureParams

Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/core#1.0.0-alpha04)

```
public final void setPictureInPictureParams(
    @NonNull PictureInPictureParamsCompat pictureInPictureParamsCompat
)
```

Sets the `https://developer.android.com/reference/androidx/core/app/PictureInPictureParamsCompat` instance for PiP.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/core/app/PictureInPictureParamsCompat pictureInPictureParamsCompat` | `https://developer.android.com/reference/androidx/core/app/PictureInPictureParamsCompat` instance to set, and it's subjected to be changed. For instance, the aspectRatio would be capped in between the minimal and maximum allowed aspectRatio; and the sourceRectHint would be center cropped to match the aspectRatio. |