Monday, December 19, 2016

Admob Banner Ads integration into Libgdx game Android Studio.

1. Create Libgdx Project you can downlaod libgdx setup app from here  https://libgdx.badlogicgames.com/download.html




2. After genrate import this project into Android Studio.


3. Right Click on Android Project and select Module Settings and select dependancies tab hit + and add google play service ads .




4. After this Add Admanger Interface using this we can show/Hide our admob Banner on Screen.

public interface AdManager
{
    void show();
    void hide();
}

 

5. Add internet usage-Permission and set min sdk version to 9 because after 10.0.1 gms its must be above 8 API. and also change this in your android.module file i.e gradle file

 <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="25" />

    <uses-permission android:name="android.permission.INTERNET" />

6. Create AdmobManager class to initialize gms.services i.e. Admob part.



import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.RelativeLayout;

import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;

public class AdmobManager implements AdManager
{

    private final int ADSHOW = 1;
    private final int ADHIDE = 0;
    private final String admobId;
    private final String TEST_DEVICE = "Ad Your Test Device id here";// get from log of android studio



    public AdView adView   = null;
    public RelativeLayout.LayoutParams adParams = null;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage( Message msg ) {
            switch ( msg.what ) {
                case ADSHOW:
                    adView.setVisibility( View.VISIBLE );
                    break;
                case ADHIDE:
                    adView.setVisibility( View.GONE );
                    break;
            }
        }
    };

    public AdmobManager( String id )
    {
        this.admobId = id;
    }

    public void init( Context context )
    {
        adParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );

//        adParams.addRule( RelativeLayout.ALIGN_PARENT_BOTTOM ); Shows Ads on Left Bottom
//        adParams.addRule( RelativeLayout.ALIGN_PARENT_LEFT );

        adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);// Shows Ads on Center Bottom
        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);

//        adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); Shows Ads on Right Bottom
//        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);

//        adParams.addRule(RelativeLayout.CENTER_HORIZONTAL); Shows Ads on Center Top
//        adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);

//        adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); Shows Ads on Top Right
//        adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);

//        adParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); Shows Ads on Left  Top
//        adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);

        adView = new AdView( context );
        adView.setAdSize( AdSize.BANNER );
        adView.setAdUnitId( admobId );
        AdRequest.Builder requestBuilder = new AdRequest.Builder();
        requestBuilder.addTestDevice( TEST_DEVICE );
        adView.loadAd( requestBuilder.build() );
    }

    @Override
    public void show() {
        handler.sendEmptyMessage( ADSHOW );
    }

    @Override
    public void hide() {
        handler.sendEmptyMessage( ADHIDE );
    }
}



7. Now Open AndroidLauncher file and intilize the AdmobManger and create Layout for Admob banner.
 




import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.imiza.mytut.MyGdxGame;

public class AndroidLauncher extends AndroidApplication {


final AndroidLauncher context = this;

final AdmobManager adMob;
final MyGdxGame game;

public AndroidLauncher()
{
adMob = new AdmobManager("Your Admob ad id here");
game = new MyGdxGame(adMob);
}

@Override
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
adMob.init( context );
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useWakelock = true;
View gameView = initializeForView( game, config );
RelativeLayout layout = new RelativeLayout( this );
layout.addView(gameView);
layout.addView( adMob.adView, adMob.adParams );
setContentView( layout );
}
}



8. Finally its time to call ads open mygdxgame.class i.e. your libgdx core game class file and create adManger object to call show()/Hide() method .



import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector3;


public class MyGdxGame extends ApplicationAdapter
{

final AdManager ads;
SpriteBatch batch;
Texture show,hide;

Rectangle showRectangle,hideRectangle;
Vector3 touchPoint;
OrthographicCamera guiCam;

public MyGdxGame(AdManager adMob)
{
this.ads=adMob;
}

@Override
public void create () {
batch=new SpriteBatch();
guiCam = new OrthographicCamera(800, 1280);
guiCam.position.set(800 / 2,1280 / 2, 0);
touchPoint = new Vector3();
show=new Texture("show.png");// 373*102
hide=new Texture("hide.png");// 377*102
showRectangle=new Rectangle(213.5f,300,373,102);
hideRectangle=new Rectangle(211.5f,500,377,102);
}

@Override
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
guiCam.update();
batch.setProjectionMatrix(guiCam.combined);
batch.begin();
batch.draw(show,213.5f,300);
batch.draw(hide,211.5f,500);
batch.end();

if ( Gdx.input.justTouched() ) {
guiCam.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
if (showRectangle.contains(touchPoint.x, touchPoint.y))
{
ads.show();
}
if (hideRectangle.contains(touchPoint.x, touchPoint.y))
{
ads.hide();
}
}
}

@Override
public void dispose () {

}
}

Note : just add two images for show/hide button show.png= 373W * 102H,hide.png=377*102

Hope this found helpfull you can get full source code here : https://github.com/imizaStudios/AdmobAdsDemo

Happy Coding.