package com.jdroid.android.google.admob.helpers;
import android.app.Activity;
import android.view.ViewGroup;
import com.google.android.gms.ads.AdActivity;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import com.jdroid.android.application.AbstractApplication;
import com.jdroid.android.context.AppContext;
import com.jdroid.android.google.admob.AdMobAppModule;
import com.jdroid.android.location.LocationHelper;
import com.jdroid.java.exception.UnexpectedException;
public class InterstitialAdHelper implements AdHelper {
private static final String TEST_AD_UNIT_ID = "ca-app-pub-3940256099942544/6300978111";
private InterstitialAd interstitial;
private Boolean displayInterstitial = false;
private String interstitialAdUnitId;
public InterstitialAdHelper() {
interstitialAdUnitId = AdMobAppModule.get().getAdMobAppContext().getDefaultAdUnitId();
}
private AdRequest.Builder createBuilder(AppContext applicationContext) {
final AdRequest.Builder builder = new AdRequest.Builder();
if (!applicationContext.isProductionEnvironment()) {
builder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
for (String deviceId : AdMobAppModule.get().getAdMobAppContext().getTestDevicesIds()) {
builder.addTestDevice(deviceId);
}
}
builder.setLocation(LocationHelper.get().getLocation());
return builder;
}
@Override
public void loadAd(Activity activity, ViewGroup adViewContainer) {
if (AdMobAppModule.get().getAdMobAppContext().areAdsEnabled()) {
interstitial = new InterstitialAd(activity);
if (interstitialAdUnitId == null) {
throw new UnexpectedException("Missing interstitial ad unit ID");
}
if (!AbstractApplication.get().getAppContext().isProductionEnvironment() && AdMobAppModule.get().getAdMobAppContext().isTestAdUnitIdEnabled()) {
interstitial.setAdUnitId(TEST_AD_UNIT_ID);
} else {
interstitial.setAdUnitId(interstitialAdUnitId);
}
AppContext applicationContext = AbstractApplication.get().getAppContext();
AdRequest.Builder builder = createBuilder(applicationContext);
interstitial.loadAd(builder.build());
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
if (displayInterstitial) {
displayInterstitial(false);
}
}
@Override
public void onAdOpened() {
super.onAdOpened();
AbstractApplication.get().getAnalyticsSender().onActivityStart(AdActivity.class, null, null);
}
});
}
}
public void displayInterstitial(Boolean retryIfNotLoaded) {
displayInterstitial = retryIfNotLoaded;
if ((interstitial != null) && interstitial.isLoaded()) {
interstitial.show();
displayInterstitial = false;
}
}
@Override
public AdHelper setAdUnitId(String adUnitId) {
this.interstitialAdUnitId = adUnitId;
return this;
}
}