Android Studio, LibGDX y AdMob.

Android Programming Tutorial.

Código de Android.

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.

One Comment

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.