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
This commit is contained in:
parent
20aa5bd926
commit
16285ca5df
2 changed files with 34 additions and 3 deletions
|
|
@ -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…
Reference in a new issue