SlotAdsProvider
Providers that play ads in their own renderer over the content surface (FreeWheel). Content pauses underneath; the SDK core orchestrates the session through SlotAdsHost and receives events through SlotAdsProviderCallbacks.
Contract: after startSession the provider MUST eventually call host.resumeContent() exactly once per content gate — after prerolls complete, after an empty schedule, or after a failed or timed-out ad request. Core never self-starts content and adds no hidden timeouts; the provider owns its failure modes.
Functions
Remote-control UIs: moves the provider's OWN focus onto its interactive elements — IMA: the skip button when present, else its icons ("About this ad") — so a D-pad can operate them. Returns false when the provider has no such UI. Called by the SDK's TV chrome on a deliberate step.
Content reached its end — the provider plays postrolls (if any) and then calls callbacks.onAllAdsCompleted().
Content play/pause state changes (drives provider video-state sync).
Content progress feed (core ticker) — drives midroll triggering.
A content seek happened — drives crossed-midroll catch-up.
The ViewGroup ads render into (set/cleared by the UI layer via core).
The viewer changed the volume while this provider's ad is on screen. A provider that renders the creative in its OWN surface (FreeWheel) must apply it there — the content engine is held under the break, so changing its volume is inaudible. Default no-op: a provider whose ads play in the content engine (IMA) already follows it.
Begins an ad session for config (the OGMediaItem.adBreaks value).
Ends the session: stops any playing slot, unregisters listeners, disposes provider-side contexts. Idempotent.