Search code examples
androidvideoadcolony

Execute more than one videos in sequence with AdColony


Hello i want to execute more than one videos in sequence with AdColony SDK, i mean that when one video finish, another has to show. But can not get it to working, one the first video finish the other video is not shown. This is my code, my onCreate method:

@Override
  public void onCreate( Bundle savedInstanceState )
  {
    super.onCreate(savedInstanceState);
    getActionBar().hide();
    // Configure ADC once early before any other ADC calls (except setCustomID/setDeviceID).
    AdColony.configure( this, "1.0", APP_ID, ZONE_ID_ONE_VIDEO );
    // version - arbitrary application version
    // store   - google or amazon

    // Disable rotation if not on a tablet-sized device (note: not
    // necessary to use AdColony).
    if ( !AdColony.isTablet() )
    {
      setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
    }

    // Notify this object about confirmed virtual currency.
    AdColony.addV4VCListener( this );

    // Notify this object about ad availability changes.
    AdColony.addAdAvailabilityListener( this );

    setContentView( R.layout.videos_ads_activity );

    mAppPreferences = new AppPreferences(this);

    /*video1 = new AdColonyV4VCAd(WatchVideosActivity.ZONE_ID_ONE_VIDEO);
    video2 = new AdColonyV4VCAd(WatchVideosActivity.ZONES_FIVES_VIDEOS[1]).withListener(this);
    video3 = new AdColonyV4VCAd(WatchVideosActivity.ZONES_FIVES_VIDEOS[2]).withListener(this);
    video4 = new AdColonyV4VCAd(WatchVideosActivity.ZONES_FIVES_VIDEOS[3]).withListener(this);
    video5 = new AdColonyV4VCAd(WatchVideosActivity.ZONES_FIVES_VIDEOS[4]).withListener(this);*/


    showOneVideo = (Button) findViewById(R.id.buttonShowOneVideo);
    showOneVideo.setOnClickListener(
            new View.OnClickListener()
            {
              public void onClick( View v )
              {
                  AdColonyV4VCAd v4vc_ad = new AdColonyV4VCAd()
                    .withListener( WatchVideosActivity.this);

                  if(v4vc_ad.getAvailableViews() == 0){
                      Toast.makeText(WatchVideosActivity.this, "Loading ads", Toast.LENGTH_SHORT).show();
                  }else{
                      v4vc_ad.show();
                  }
              }
            });

    showFiveVideos = (Button) findViewById(R.id.buttonShowFiveVideos);
    showFiveVideos.setOnClickListener(
            new View.OnClickListener()
            {
              public void onClick( View v )
              {
                  v4vc_ad = new AdColonyV4VCAd(ZONE_ID_ONE_VIDEO)
                    .withListener( WatchVideosActivity.this);

                  if(v4vc_ad.getAvailableViews() == 0){
                      Toast.makeText(WatchVideosActivity.this, "Loading ads", Toast.LENGTH_SHORT).show();
                  }else{
                      v4vc_ad.show();
                  }
              }
            });
}

The rest of my class (i don't put the instance variables but its are declared):

      public void onPause()
  {
    super.onPause();
    AdColony.pause();
  }

  public void onResume()
  {
    super.onResume();
    AdColony.resume( this );
  }

  // Reward Callback
  public void onAdColonyV4VCReward( AdColonyV4VCReward reward )
  {
    if (reward.success())
    {
      //Guardamos el reward en mi preference
      mAppPreferences.setCoins(mAppPreferences.getCoins() + reward.amount());
      Log.d("AdColony", "rewaerdCallback listener");
    }
  }

  // Ad Started Callback - called only when an ad successfully starts playing
  public void onAdColonyAdStarted( AdColonyAd ad )
  {
    Log.d("AdColony", "onAdColonyAdStarted");
  }

  //Ad Attempt Finished Callback - called at the end of any ad attempt - successful or not.
  public void onAdColonyAdAttemptFinished( AdColonyAd ad )
  {

          try {
                Thread.sleep(1500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        AdColonyV4VCAd v4vc_ad = new AdColonyV4VCAd()
        .withListener( WatchVideosActivity.this);

        v4vc_ad.show();
      }
  }

I create a new video in the onAdColonyAdAttemptFinished callback, but this is not show up. Please can help me? Thanks in advance.


Solution

  • A new AdColony video ad will not be ready until after the onAdColonyAdAttemptFinished callback. Also, the idea of having a button to show five videos in this fashion is not recommended as there is no way to always ensure this level of ad availability.

    That being said, a possible workaround for this would be to use a Handler and a Runnable like so:

    //In your onCreate method w/ the variables declared globally
    handler = new Handler();
    runnable = new Runnable()
    {
      public void run()
      {
        AdColonyV4VCAd ad = new AdColonyV4VCAd( ZONE_ID ).withListener( listener );
        ad.show();
      }
    };
    
    ...
    ...
    ...
    
    //At the end of your onAdColonyAdAttemptFinished method,
    //delay a second or so to allow your Activity to regain 
    //control before attempting to launch the new advertisement.
    handler.postDelayed( runnable, 1000 );
    

    With this solution there is also no need for the Thread.sleep() that you currently have included. Feel free to contact us directly at [email protected] for any other inquiries you may have.