Add AdsLoader.focusSkipButton()
This method allows to call through to `StreamManager.focus()` of the currently playing SSAI stream. PiperOrigin-RevId: 501399144
This commit is contained in:
parent
20aa5bd926
commit
16285ca5df
@ -73,6 +73,9 @@ Release notes
|
|||||||
* Add a property `focusSkipButtonWhenAvailable` to the
|
* Add a property `focusSkipButtonWhenAvailable` to the
|
||||||
`ImaServerSideAdInsertionMediaSource.AdsLoader.Builder` to request
|
`ImaServerSideAdInsertionMediaSource.AdsLoader.Builder` to request
|
||||||
focusing the skip button on TV devices and set it to true by default.
|
focusing the skip button on TV devices and set it to true by default.
|
||||||
|
* Add a method `focusSkipButton()` to the
|
||||||
|
`ImaServerSideAdInsertionMediaSource.AdsLoader` to programmatically
|
||||||
|
request to focus the skip button.
|
||||||
* Bump IMA SDK version to 3.29.0.
|
* Bump IMA SDK version to 3.29.0.
|
||||||
* Demo app
|
* Demo app
|
||||||
* Request notification permission for download notifications at runtime
|
* Request notification permission for download notifications at runtime
|
||||||
|
@ -376,8 +376,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
|||||||
|
|
||||||
private final ServerSideAdInsertionConfiguration configuration;
|
private final ServerSideAdInsertionConfiguration configuration;
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final Map<ImaServerSideAdInsertionMediaSource, MediaSourceResourceHolder>
|
private final Map<String, MediaSourceResourceHolder> mediaSourceResources;
|
||||||
mediaSourceResources;
|
|
||||||
private final Map<String, AdPlaybackState> adPlaybackStateMap;
|
private final Map<String, AdPlaybackState> adPlaybackStateMap;
|
||||||
|
|
||||||
@Nullable private Player player;
|
@Nullable private Player player;
|
||||||
@ -403,6 +402,35 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
|||||||
this.player = player;
|
this.player = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Puts the focus on the skip button, if a skip button is present and an ad is playing.
|
||||||
|
*
|
||||||
|
* @see StreamManager#focus()
|
||||||
|
*/
|
||||||
|
public void focusSkipButton() {
|
||||||
|
if (player == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (player.getPlaybackState() != Player.STATE_IDLE
|
||||||
|
&& player.getPlaybackState() != Player.STATE_ENDED
|
||||||
|
&& player.getMediaItemCount() > 0) {
|
||||||
|
int currentPeriodIndex = player.getCurrentPeriodIndex();
|
||||||
|
Object adsId =
|
||||||
|
player
|
||||||
|
.getCurrentTimeline()
|
||||||
|
.getPeriod(currentPeriodIndex, new Timeline.Period())
|
||||||
|
.getAdsId();
|
||||||
|
if (adsId instanceof String) {
|
||||||
|
MediaSourceResourceHolder mediaSourceResourceHolder = mediaSourceResources.get(adsId);
|
||||||
|
if (mediaSourceResourceHolder != null
|
||||||
|
&& mediaSourceResourceHolder.imaServerSideAdInsertionMediaSource.streamManager
|
||||||
|
!= null) {
|
||||||
|
mediaSourceResourceHolder.imaServerSideAdInsertionMediaSource.streamManager.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Releases resources.
|
* Releases resources.
|
||||||
*
|
*
|
||||||
@ -429,7 +457,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
|||||||
StreamPlayer streamPlayer,
|
StreamPlayer streamPlayer,
|
||||||
com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader) {
|
com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader) {
|
||||||
mediaSourceResources.put(
|
mediaSourceResources.put(
|
||||||
mediaSource, new MediaSourceResourceHolder(mediaSource, streamPlayer, adsLoader));
|
mediaSource.adsId, new MediaSourceResourceHolder(mediaSource, streamPlayer, adsLoader));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AdPlaybackState getAdPlaybackState(String adsId) {
|
private AdPlaybackState getAdPlaybackState(String adsId) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user