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.
Deja una respuesta