This page covers data collection for the Picture in picture player state. See Streams impacted by picture in picture, Picture in picture counts, and Picture in picture total duration for the corresponding reporting metrics.
The picture in picture player state tracks when the viewer enters and exits picture-in-picture playback. Fire a state-start event when picture-in-picture begins and a state-end event when it ends. The backend computes three metrics from these events: streams impacted, count of state entries, and total time in state.
a.media.states.pictureinpicture.set, a.media.states.pictureinpicture.count, a.media.states.pictureinpicture.timexdm.mediaCollection.statesStart[] and xdm.mediaCollection.statesEnd[] (entries with name: "pictureInPicture")c_contextdata.a.media.states.pictureinpicture.set, c_contextdata.a.media.states.pictureinpicture.count, c_contextdata.a.media.states.pictureinpicture.timeRecommended implementation types
Use sendEvent to send a media.statesUpdate event with the state added to statesStart:
| code language-javascript |
|---|
|
When the viewer exits picture-in-picture, send another event with the state in statesEnd:
| code language-javascript |
|---|
|
Use tracker.trackPlayerStateStart() and tracker.trackPlayerStateEnd() with the MediaConstants.PlayerState.PICTURE_IN_PICTURE constant.
| code language-swift |
|---|
|
Use tracker.trackPlayerStateStart() and tracker.trackPlayerStateEnd() with the MediaConstants.PlayerState.PICTURE_IN_PICTURE constant.
| code language-kotlin |
|---|
|
Use sendMediaEvent to send a media.statesUpdate event with the state added to statesStart:
| code language-brightscript |
|---|
|
When the viewer exits picture-in-picture, send another event with the state in statesEnd:
| code language-brightscript |
|---|
|
Call the statesUpdate endpoint with pictureInPicture in statesStart (or statesEnd when the viewer exits PiP):
| code language-json |
|---|
|
Legacy implementation types (Analytics-only)
Use ADB.Media.createStateObject and the ADB.Media.PlayerState.PictureInPicture constant:
| code language-javascript |
|---|
|
Use ADBMobile.media.createStateObject with the "pictureInPicture" string directly, as Chromecast does not have named PlayerState constants:
| code language-javascript |
|---|
|
Send a stateStart POST request when picture-in-picture begins, and a stateEnd POST when it ends:
| code language-json |
|---|
|
See the Media Collection API events reference for the full request structure.