mirror of
https://github.com/samsonjs/media.git
synced 2026-03-26 09:35:47 +00:00
Add AdsLoader.focusSkipButton()
This method allows to call through to `StreamManager.focus()` of the currently playing SSAI stream.
PiperOrigin-RevId: 501399144
(cherry picked from commit 0ba0c0ed43)
This commit is contained in:
parent
fc4415bab4
commit
8f37ad6bf8
1 changed files with 31 additions and 3 deletions
|
|
@ -374,8 +374,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;
|
||||
|
|
@ -401,6 +400,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.
|
||||
*
|
||||
|
|
@ -427,7 +455,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…
Reference in a new issue