Cocos2d-xでiPhone&Androidアプリ開発記5 AdMob Android編

top

iOSに続きAndroidにAdmodを導入します。とりあえずAdModだけ表示できればよいのでメディエーションは指定していません。今後時期をみて対応します。

原理的にはiOSと同じで、Cocos2dxの親になるjavaに直接記述します。

スポンサーリンク

 

準備

Admod SDKのダウンロード

  • cocos2d-x 2.2.2
  • GoogleAdMobAdsSdkAndroid-6.4.1

解凍後、GoogleAdMobAdsSdk-6.4.1.jarをプロジェクト内proj.android > libsにコピー。

Downloads - Google Mobile Ads SDK — Google Developers

 

Eclipseにて

Eclipseの一番左のペインPackage Explorerにて。

  • AndroidManifest.xml
  • src > com.plusblog.adtest > adtest.java

の2つのファイルを編集していきます。com.plusblog.adtestは各自置き換えてください。

AndroidManifest.xmlに追加するのは3行。ネットワークと広告のアクセス許可。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

全体はこうなりました。

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.plusblog.adtest"
      android:versionCode="1"
      android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8"/>
    <uses-feature android:glEsVersion="0x00020000" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application android:label="@string/app_name"
        android:icon="@drawable/icon">

        <activity android:name=".adtest"
                  android:label="@string/app_name"
                  android:screenOrientation="portrait"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:configChanges="orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    </application>
    
    <supports-screens android:largeScreens="true"
                      android:smallScreens="true"
                      android:anyDensity="true"
                      android:normalScreens="true"/>
                         
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

この状態でビルドしてみてOKなら次へ。私はダメでした。

Build Targetを3.2に変更

広告表示にはProject Build TargetがPlatform3.2(API Level13)以上が必要とのこと。私は2.2になってました。

Package Explorerのプロジェクト名を右クリックメニューでPropertiesを表示。そこで3.2を選べばいいが存在せず。

上部メニュー Windows > Android SDK Manager からAndroid 3.2(API 13)のSDK Platformをインストール。→Eclipse再起動で選べるように。

 

java実装

admodとコメントした行を追加しました。広告は一番下に表示されます。

adtest.java
adtest.java
package com.plusblog.adtest;

import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

// admod
import android.os.Bundle;
import com.google.ads.*;
import android.widget.*;
import android.view.Gravity;

public class adtest extends Cocos2dxActivity{
    
     // admod
    private static AdView adView;
    private static Cocos2dxActivity me = null;
    private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
    private final int MP = LinearLayout.LayoutParams.MATCH_PARENT;
       
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);    
        
         // admod
        adView = new AdView(this, AdSize.SMART_BANNER, "ca-app-pub-xxx/xxx");
        FrameLayout.LayoutParams adParams = new FrameLayout.LayoutParams(WC,WC);
        adParams.gravity = (Gravity.BOTTOM|Gravity.CENTER);
        addContentView(adView, adParams);
        adView.loadAd(new AdRequest());
        me = this;
    }

    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
        // adtest should create stencil buffer
        glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
        
        return glSurfaceView;
    }
    
    // admod
    protected void onDestory()
    {
        if ( adView != null )
        {
            adView.destroy();
        }
        super.onDestroy();
    }

    static {
        System.loadLibrary("cocos2dcpp");
    }     
}

 

 

スポンサーリンク