Handle VAST_LINEAR_ASSET_MISMATCH
This error marks the current ad group as unplayable. Issue: #3801 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=185663472
This commit is contained in:
parent
09de29d534
commit
43cfb08207
@ -85,6 +85,8 @@
|
|||||||
([#3584](https://github.com/google/ExoPlayer/issues/3584)).
|
([#3584](https://github.com/google/ExoPlayer/issues/3584)).
|
||||||
* Work around loadAd not being called beore the LOADED AdEvent arrives
|
* Work around loadAd not being called beore the LOADED AdEvent arrives
|
||||||
([#3552](https://github.com/google/ExoPlayer/issues/3552)).
|
([#3552](https://github.com/google/ExoPlayer/issues/3552)).
|
||||||
|
* Handle asset mismatch errors
|
||||||
|
([#3801](https://github.com/google/ExoPlayer/issues/3801)).
|
||||||
* Add support for playing non-Extractor content MediaSources in
|
* Add support for playing non-Extractor content MediaSources in
|
||||||
the IMA demo app
|
the IMA demo app
|
||||||
([#3676](https://github.com/google/ExoPlayer/issues/3676)).
|
([#3676](https://github.com/google/ExoPlayer/issues/3676)).
|
||||||
|
@ -25,6 +25,8 @@ import android.view.ViewGroup;
|
|||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
import com.google.ads.interactivemedia.v3.api.Ad;
|
import com.google.ads.interactivemedia.v3.api.Ad;
|
||||||
import com.google.ads.interactivemedia.v3.api.AdDisplayContainer;
|
import com.google.ads.interactivemedia.v3.api.AdDisplayContainer;
|
||||||
|
import com.google.ads.interactivemedia.v3.api.AdError;
|
||||||
|
import com.google.ads.interactivemedia.v3.api.AdError.AdErrorCode;
|
||||||
import com.google.ads.interactivemedia.v3.api.AdErrorEvent;
|
import com.google.ads.interactivemedia.v3.api.AdErrorEvent;
|
||||||
import com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener;
|
import com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener;
|
||||||
import com.google.ads.interactivemedia.v3.api.AdEvent;
|
import com.google.ads.interactivemedia.v3.api.AdEvent;
|
||||||
@ -580,14 +582,17 @@ public final class ImaAdsLoader extends Player.DefaultEventListener implements A
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAdError(AdErrorEvent adErrorEvent) {
|
public void onAdError(AdErrorEvent adErrorEvent) {
|
||||||
|
AdError error = adErrorEvent.getError();
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "onAdError " + adErrorEvent);
|
Log.d(TAG, "onAdError", error);
|
||||||
}
|
}
|
||||||
if (adsManager == null) {
|
if (adsManager == null) {
|
||||||
// No ads were loaded, so allow playback to start without any ads.
|
// No ads were loaded, so allow playback to start without any ads.
|
||||||
pendingAdRequestContext = null;
|
pendingAdRequestContext = null;
|
||||||
adPlaybackState = new AdPlaybackState();
|
adPlaybackState = new AdPlaybackState();
|
||||||
updateAdPlaybackState();
|
updateAdPlaybackState();
|
||||||
|
} else if (isAdGroupLoadError(error)) {
|
||||||
|
handleAdGroupLoadError();
|
||||||
}
|
}
|
||||||
if (pendingAdErrorEvent == null) {
|
if (pendingAdErrorEvent == null) {
|
||||||
pendingAdErrorEvent = adErrorEvent;
|
pendingAdErrorEvent = adErrorEvent;
|
||||||
@ -1041,4 +1046,9 @@ public final class ImaAdsLoader extends Player.DefaultEventListener implements A
|
|||||||
return adGroupTimesUs;
|
return adGroupTimesUs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isAdGroupLoadError(AdError adError) {
|
||||||
|
// TODO: Find out what other errors need to be handled (if any), and whether each one relates to
|
||||||
|
// a single ad, ad group or the whole timeline.
|
||||||
|
return adError.getErrorCode() == AdErrorCode.VAST_LINEAR_ASSET_MISMATCH;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user