Android Open Source - snakk-ads-android-sample-app Abstract Stateful Ad






From Project

Back to project page snakk-ads-android-sample-app.

License

The source code is released under:

Copyright (c) 2012, Snakk! Media Group All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are m...

If you think the Android project snakk-ads-android-sample-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.snakk.advertising.internal;
/*from  ww  w  .  jav a2s  .c o m*/
import com.snakk.core.SnakkLog;

/**
 * logic for tracking ad state, such as ignoring load requests to ads that are
 * currently loading, and handling automatic "load and show" functionality when
 * end user calls ad.show() before ad.load().
 *
 * This class is not thread safe.
 */
public abstract class AbstractStatefulAd {
    protected static final String TAG = "Snakk";

    protected static enum State { NEW, LOADING, LOADED, SHOWN, DONE }
    protected boolean showImmediately = false;
    protected State state = State.NEW;

    /**
     * moves to the next state, if particular state transition is allowed.  If
     * transition is not allowed, state is not changed.
     * @param newState the state to update to
     * @return true if state change was successful, false if it was blocked.
     */
    protected boolean ratchetState(State newState) {
        if (newState.compareTo(state) > 0) {
            state = newState;
            return true;
        }
        SnakkLog.d(TAG, "Invalid state transition: " + state + " -> " + newState);
        return false;
    }

    /**
     * fill this in w/ the actual ad loading behavior, such as making a request
     * to the ad server
     */
    public abstract void doLoad();

    public void load() {
        if (ratchetState(State.LOADING)) {
            doLoad();
        }
        else if (state == State.LOADING) {
            // currently loading... do nothing
            SnakkLog.d(TAG, "Ignoring attempt to load interstitial... already loading!");
        }
        else {
            // already been loaded... don't reuse interstitials!
            SnakkLog.w(TAG, "Ignoring attempt to re-load interstitial.");
        }
    }

    public boolean isLoaded() {
        return (state == State.LOADED);
    }

    /**
     * fill this in w/ the actual ad show behavior, such as displaying ad view,
     * or popping up an activity.
     */
    public abstract void doShow();

    public void show() {
        switch (state) {
            case NEW:
                SnakkLog.v(TAG, "Loading ad asynchronously before showing");
                load();
                // fall through
            case LOADING:
                // mark to display as soon as interstitial is rdy
                showImmediately = true;
                break;

            case LOADED:
                doShow();
                ratchetState(State.SHOWN);

                break;

            case SHOWN:
            case DONE:
            default:
                SnakkLog.w(TAG, "Ignoring attempt to re-use interstitial.");
                break;
        }

    }
}




Java Source Code List

com.snakk.advertising.Config.java
com.snakk.advertising.SnakkAdPrompt.java
com.snakk.advertising.SnakkAdRequest.java
com.snakk.advertising.SnakkAdvertising.java
com.snakk.advertising.SnakkBannerAdView.java
com.snakk.advertising.SnakkInterstitialAd.java
com.snakk.advertising.SnakkVideoInterstitialAd.java
com.snakk.advertising.internal.AbstractStatefulAd.java
com.snakk.advertising.internal.AdActivityContentWrapper.java
com.snakk.advertising.internal.AdPromptImpl.java
com.snakk.advertising.internal.AdRequestImpl.java
com.snakk.advertising.internal.BasicWebView.java
com.snakk.advertising.internal.DeviceCapabilities.java
com.snakk.advertising.internal.InterstitialAdImpl.java
com.snakk.advertising.internal.InterstitialBaseView.java
com.snakk.advertising.internal.Sharable.java
com.snakk.advertising.internal.SnakkAdActivity.java
com.snakk.advertising.internal.VastPlayerView.java
com.snakk.advertising.internal.VideoInterstitialAdImpl.java
com.snakk.advertising.package-info.java
com.snakk.adview.AdFullscreenView.java
com.snakk.adview.AdInterstitialBaseView.java
com.snakk.adview.AdInterstitialView.java
com.snakk.adview.AdLog.java
com.snakk.adview.AdOfferWallView.java
com.snakk.adview.AdPrompt.java
com.snakk.adview.AdRequest.java
com.snakk.adview.AdVideoUnitView.java
com.snakk.adview.AdViewCore.java
com.snakk.adview.AdView.java
com.snakk.adview.AutoDetectedParametersSet.java
com.snakk.adview.Base64.java
com.snakk.adview.DeprecatedInterstitialBaseView.java
com.snakk.adview.IMraidCommand.java
com.snakk.adview.LockedOrientationDialog.java
com.snakk.adview.MraidCommand.java
com.snakk.adview.Mraid.java
com.snakk.adview.OldAdActivity.java
com.snakk.adview.Rotate3dAnimation.java
com.snakk.adview.Utils.java
com.snakk.adview.track.EventTracker.java
com.snakk.adview.track.InstallTracker.java
com.snakk.adview.package-info.java
com.snakk.core.SnakkLog.java
com.snakk.vastsdk.TVASTAdErrorEvent.java
com.snakk.vastsdk.TVASTAdErrorListener.java
com.snakk.vastsdk.TVASTAdError.java
com.snakk.vastsdk.TVASTAdType.java
com.snakk.vastsdk.TVASTAdView.java
com.snakk.vastsdk.TVASTAd.java
com.snakk.vastsdk.TVASTAdsLoader.java
com.snakk.vastsdk.TVASTAdsRequest.java
com.snakk.vastsdk.TVASTCompanionAdSlot.java
com.snakk.vastsdk.TVASTCompanionAd.java
com.snakk.vastsdk.TVASTCreative.java
com.snakk.vastsdk.TVASTLinearAd.java
com.snakk.vastsdk.TVASTLinearIcon.java
com.snakk.vastsdk.TVASTMediaFile.java
com.snakk.vastsdk.TVASTNonlinearAd.java
com.snakk.vastsdk.TVASTPostbackTask.java
com.snakk.vastsdk.TVASTUtils.java
com.snakk.vastsdk.TVASTVideoAdsManager.java
com.snakk.vastsdk.player.TVASTPlayer.java
com.snakk.vastsdk.player.TVASTSharable.java
com.snakk.vastsdk.player.TVASTTrackingVideoView.java
com.snakk.vastsdk.player.TVASTVideoProgressThread.java
com.snakkads.tabsswipe.BannerAdPromptFragment.java
com.snakkads.tabsswipe.BannerInterstitialFragment.java
com.snakkads.tabsswipe.BannerRichMediaFragment.java
com.snakkads.tabsswipe.BannerStandardMediaFragment.java
com.snakkads.tabsswipe.BannerVideoFragment.java
com.snakkads.tabsswipe.MainActivity.java
com.snakkads.tabsswipe.SplashScreen.java
com.snakkads.tabsswipe.adapter.TabsPagerAdapter.java
com.yourcompany.AdMobActivity.java
com.yourcompany.SampleActivity.java