Android Studio, LibGDX y AdMob

Implementar Google AdMob en Android Studio con LibGDX correctamente.

Cómo implementar Google AdMob usando Android Studio y LibGDX.

Esta implementación añade anuncios en una disposición (layout) independiente y no interfiere con la superficie de la aplicación.

Se asume que ya estas registrado con Google AdMob y tienes un número de identificación de anuncio (AD_UNIT_ID).

PASO 1. Añadir la dependencia de AdMob a Gradle. Busca el archivo build.gradle en el módulo de Android y añade la dependencia necesaria (línea 31).


apply plugin: 'com.android.application'

android {
 compileSdkVersion 22
 buildToolsVersion "21.1.2"

 defaultConfig {
  minSdkVersion 9
  targetSdkVersion 22
  versionCode 1
  versionName "1"
  applicationId "com.quagem.tutorial"
 }

 sourceSets {

  main {
   manifest.srcFile 'AndroidManifest.xml'
   java.srcDirs = ['src']
   aidl.srcDirs = ['src']
   renderscript.srcDirs = ['src']
   res.srcDirs = ['res']
   assets.srcDirs = ['assets']
  }
 }

}

dependencies {
 compile 'com.android.support:support-v4:25.0.1'
 compile 'com.google.android.gms:play-services:10.0.0'
}

PASO 2. Prepara el manifiesto. Añade las líneas 7, 8, 27-30 al archivo “AndroidManifest.xml”


<?xml version="1.0" encoding="utf-8"?>

<manifest
 xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.quagem.tutorial"/>

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

 <application
  android:allowBackup="true"
  android:icon="@drawable/ic_launcher"
  android:label="@string/app_name"
  android:theme="@style/GdxTheme">

  <activity
   android:name="com.quagem.tutorial.AndroidLauncher"
   android:label="@string/app_name"
   android:screenOrientation="portrait"
   android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
   <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
   </intent-filter>
  </activity>

  <activity
   android:name="com.google.android.gms.ads.AdActivity"
   android:theme="@android:style/Theme.Translucent"
   android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

 </application>

</manifest>

3. Prepara la disposición (Layout). Con este código, creas dos fragmentos, uno para LibGDX (GameView) y otro para AdMob (adView).


<RelativeLayout

 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 xmlns:ads="http://schemas.android.com/apk/res-auto"

 tools:context=".MainActivity"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"/>

 <FrameLayout
  android:id="@+id/GameView"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"
  android:layout_above="@+id/adView"/>

  <com.google.android.gms.ads.AdView
   android:id="@+id/adView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_alignParentBottom="true"
   android:layout_centerHorizontal="true"
   ads:adUnitId="@string/AD_UNIT_ID"
   ads:adSize="SMART_BANNER"/>

</RelativeLayout>

4. Crea la clase para el fragmento de LibGDX. (GameFragment)


public class GameFragment extends AndroidFragmentApplication {

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
 }

 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
  return initializeForView(new Main(), config);
 }

 public void onActivityResult(int request, int response, Intent data) {
  super.onActivityResult(request, response, data);
 }

 @Override
 public void onStart() {
  super.onStart();
 }

 @Override
 public void onStop() {
  super.onStop();
 }

 @Override
 public void onDestroy() {
  super.onDestroy();
 }
}

5. Por ultimo, modifica la clase lanzadora de Android (AndroidLauncher) para que expanda “FragmentActivity” e implemente “AndroidFragmentApplication.Callbacks”.


public class AndroidLauncher extends FragmentActivity implements AndroidFragmentApplication.Callbacks {

 private AdView adView;
 private GameFragment gameFragment;

 @Override
 protected void onCreate (Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.main_layout);

  gameFragment = new GameFragment();
  FragmentTransaction tr = getSupportFragmentManager().beginTransaction();
  tr.replace(R.id.GameView, gameFragment);
  tr.commit();

  adView = (AdView) findViewById(R.id.adView);

  AdRequest adRequest = new AdRequest.Builder()
   .tagForChildDirectedTreatment(true)
   .build();

  adView.loadAd(adRequest);

 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  gameFragment.onActivityResult(requestCode, resultCode, data);
 }

 @Override
 public void exit() {
 }

 @Override
 public void onPause() {
  if (adView != null) adView.pause();
  super.onPause();
 }

 @Override
 public void onResume() {
  super.onResume();
  if (adView != null) adView.resume();
 }

 @Override
 public void onDestroy() {
  if (adView != null) adView.destroy();
  super.onDestroy();
 }
}

De todo estar bien, debes ver la aplicación de LibGDX arriba y AdMob abajo en la pantalla.

Únete a otros 36 suscriptores

Una respuesta a «Android Studio, LibGDX y AdMob»

Deja una respuesta

  1. video reward ?

Anuncios


Consola en pantalla 

Algo que siempre he querido tener es la consola visual en pantalla. Lo encuentro útil porque puedo ver el evento directo sin tener que desviar la mirada hacia la consola.

Continua Leyendo...
Anuncios

Why are you reporting this comment?

Report type