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
|
||||
`ImaServerSideAdInsertionMediaSource.AdsLoader.Builder` to request
|
||||
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.
|
||||
* Demo app
|
||||
* Request notification permission for download notifications at runtime
|
||||
|
@ -376,8 +376,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
||||
|
||||
private final ServerSideAdInsertionConfiguration configuration;
|
||||
private final Context context;
|
||||
private final Map<ImaServerSideAdInsertionMediaSource, MediaSourceResourceHolder>
|
||||
mediaSourceResources;
|
||||
private final Map<String, MediaSourceResourceHolder> mediaSourceResources;
|
||||
private final Map<String, AdPlaybackState> adPlaybackStateMap;
|
||||
|
||||
@Nullable private Player player;
|
||||
@ -403,6 +402,35 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
||||
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.
|
||||
*
|
||||
@ -429,7 +457,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
||||
StreamPlayer streamPlayer,
|
||||
com.google.ads.interactivemedia.v3.api.AdsLoader adsLoader) {
|
||||
mediaSourceResources.put(
|
||||
mediaSource, new MediaSourceResourceHolder(mediaSource, streamPlayer, adsLoader));
|
||||
mediaSource.adsId, new MediaSourceResourceHolder(mediaSource, streamPlayer, adsLoader));
|
||||
}
|
||||
|
||||
private AdPlaybackState getAdPlaybackState(String adsId) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user