[LibGDX] Integrating RevMob

So, It took me awhile to get this working… and after I finally got it working… I realized RevMob isn’t what I wanted. Lol. :facedesk:

Anyway, let’s get started.

In your core project, create a new package. “com.companyname.gamename.monetization”

Create a new interface called RevmobAdInterface. (Created the same way as a class)
Make sure that class looks like this.

package com.companyname.gamename.monetization;

public interface RevmobAdInterface {
    public void showInterstitialAds(boolean show);
    public void showBannerAd(boolean show);
}

Once completed, head over to your android project.
Create a new package – Once again called com.companyname.gamename.android.monetization
Make that class name “RevMobIntegration” and look like this

Note: You’ll have to replace all of your imports with the proper thing, (IE Replace com.fmeg.tapout with com.company.game)
Note: This class assumes your main android class is AndroidLauncher.java. Your main class will extends AndroidApplication.

package com.fmeg.tapout.android.monetization;

import android.util.Log;

import com.fmeg.tapout.android.AndroidLauncher;
import com.fmeg.tapout.monetization.RevmobAdInterface;
import com.revmob.RevMob;
import com.revmob.RevMobAdsListener;
import com.revmob.RevMobTestingMode;
import com.revmob.ads.banner.RevMobBanner;
import com.revmob.ads.fullscreen.RevMobFullscreen;

public class RevMobIntegration implements RevmobAdInterface {
	
	private static final String APPLICATION_ID = "YourAdmobAppIDHere";
	
        // Set this to false when creating the version for the store.
	private static final boolean DEBUG = true;
	
	private RevMobAdsListener listener;
	
	private RevMobFullscreen fullscreenAd;
	private RevMobBanner bannerAd;
	
	private AndroidLauncher application;
	private RevMob revmob;
	
	public RevMobIntegration(AndroidLauncher _application) {
		this.application = _application;
		this.revmob = RevMob.start(application);
		if(DEBUG) {
			revmob.setTestingMode(RevMobTestingMode.WITH_ADS);
		}
		
		listener = new RevMobAdsListener() {

			@Override
			public void onRevMobAdClicked() {
				Log.i("[RevMob]", "Advertisement Clicked!");
				revmob.openAdLink(application, APPLICATION_ID, this);
				//showInterstitialAds(false);
			}

			@Override
			public void onRevMobAdDismiss() {
				Log.i("[RevMob]", "Advertisement Closed!");
				fullscreenAd.hide();
			}

			@Override
			public void onRevMobAdDisplayed() {
				Log.i("[RevMob]", "Advertisement Displayed!");
			}

			@Override
			public void onRevMobAdNotReceived(String message) {
				Log.i("[RevMob]", "No Advertisement Available!");
			}

			@Override
			public void onRevMobAdReceived() {
				Log.i("[RevMob]", "Advertisement Pulled from network!");
			}

			@Override
			public void onRevMobSessionIsStarted() {}
			@Override
			public void onRevMobSessionNotStarted(String arg0) {}
		};
		
		fullscreenAd = revmob.createFullscreen(application,
				APPLICATION_ID, listener);
		bannerAd = revmob.createBanner(application, APPLICATION_ID, listener);
		revmob.setTimeoutInSeconds(5);
	}
	
	@Override
	public void showInterstitialAds(boolean show) {
		if(show) {
			if(fullscreenAd == null) {
				fullscreenAd = revmob.createFullscreen(application,
						APPLICATION_ID, listener);
				fullscreenAd.show();
			} else {
				fullscreenAd.show();
			}
		} else {
			fullscreenAd.hide();
		}
	}
	
	@Override
	public void showBannerAd(boolean show) {
		if(show) {
			if(bannerAd == null) {
				bannerAd = revmob.createBanner(application, APPLICATION_ID, listener);
			}
		} else {
			bannerAd.hide();
		}
	}
	
	public RevMobBanner getBannerAd() { return bannerAd; }
}

Now, go to your main class for the android project (in my case it’s AndroidLauncher.java)

Search for

protected void onCreate (Bundle savedInstanceState) {

Remove the line

initialize(

and replace it with this.

// Custom Init
		RevMobIntegration revmob = new RevMobIntegration(this);
		RelativeLayout bannerLayout = new RelativeLayout(this);
		RelativeLayout applicationLayout = new RelativeLayout(this);
		bannerLayout.setVisibility(View.GONE);
		float screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
		int bannerHeight = (int) (180/1920f*screenHeight);
		
		RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
				RelativeLayout.LayoutParams.WRAP_CONTENT, bannerHeight);
		
		adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        adParams.addRule(RelativeLayout.CENTER_VERTICAL);
		
        bannerLayout.setLayoutParams(adParams);
        
        View gdxView = initializeForView(new TapoutGame(revmob), config);
        applicationLayout.addView(gdxView);
        
        if(revmob.getBannerAd() != null) {
        	applicationLayout.addView(revmob.getBannerAd());
        }
        
        setContentView(applicationLayout);


This basically does everything that initialize does, however creates a relativelayout so we can draw the advertisement ontop of the LibGDX display. (I tried to override initialize, but it wouldn’t work)

Make sure to replace “TapoutGame” with your games main class. (in package com.company.game) in the core project

In the game class, add the following variable

private static RevmobAdInterface adInterface;

Create the following constructors.

public TapoutGame(RevmobAdInterface adInterface) {
		this.adInterface = adInterface;
	}

public TapoutGame( ) {

	}

Create a getter for the advertisements

	public RevmobAdInterface getAds() {
		return adInterface;
	}
	

Save, Compile. Complete.

Make sure to change your application id in RevMobIntegration.java.
Also, don’t forget to import the Jar file and set it as a library (The RevMob instructions show you how to do this)

To show a fullscreen advertisement you simply call

game.getAds().showInterstitialAds(true);

(from another class, considering game is what you called your instance of the main class)
or

getAds().showInterstitalAds(true);

from the main class.

To disable the banner advertisement, simply comment out the line

bannerAd = revmob.createBanner(application, APPLICATION_ID, listener);

in RevMobIntegration.java