今回はAndroid版を解説します。
前回の記事を参考にして、
新規で広告枠を作成してSDKと識別コードを取得しましょう。

Android用のメディア識別コードをメモってください

続いてEclipseを起動して、
SDKをプロジェクトに追加します。
ビルドパスの構成を選択




次にアイコン設置用のレイアウトファイルを新規で作成します。
layoutで右クリックメニューを開いて新規でxmlファイルを作成します。
その他を選択します


今回は「icon.xml」としました

これで作成されました。

次にこのファイルを編集していきます。
icon.xmlを開いてください
下記のように書き換えます
これはアイコン1つ分の領域と考えてください。
<?xml version="1.0" encoding="UTF-8"?>
<view
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="80dp"
android:layout_height="80dp"
class="jp.maru.mrd.IconCell"
/>
次に「AndroidManifest.xml」を編集します。
ネットワーク接続するので、権限の追加をします。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.co.fuate.gaomartest"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8"/>
<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" android:enabled="true">
<activity android:name=".GaomarTest"
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>
</application>
<supports-screens android:largeScreens="true"
android:smallScreens="true"
android:anyDensity="true"
android:normalScreens="true"/>
</manifest>
次に新規でクラスを作成します。「iconAd.java」を作成しましょう。


では、編集していきます。
package jp.co.fuate.gaomartest;
import jp.maru.mrd.IconCell;
import jp.maru.mrd.IconLoader;
import android.app.Activity;
import android.view.View;
import android.widget.LinearLayout;
public class IconAd {
private Activity mActivity;
private LinearLayout mLayout;
private IconLoader<Integer> mIconLoader;
public IconAd(final Activity act, final LinearLayout layout, final IconLoader<Integer> iconLoader) {
mActivity = act;
mLayout = layout;
mIconLoader = iconLoader;
adInit();
}
/**
* 広告初期化
*/
private void adInit() {
try {
// ここでicon.xmlファイルを読み込んで来てます
View view = mActivity.getLayoutInflater().inflate(R.layout.icon, null);
if (view instanceof IconCell) {
((IconCell)view).addToIconLoader(mIconLoader);
}
mLayout.addView(view);
} catch(Exception e) {
e.printStackTrace();
}
}
}
次に「Cocos2dxActivity.java」を編集します。
public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelperListener {
private static Cocos2dxActivity myActivity;
// ジャストのサイズにする
private final int FP = LinearLayout.LayoutParams.FILL_PARENT;
// 広告レイアウト
private LinearLayout iconAdView;
// アイコン型広告
private static final String _MEDIA_CODE = "xxxxxxxxxxxxxxxxxx"; //←メモした識別コードに変えてください
private IconLoader<Integer> iconAd;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mHandler = new Cocos2dxHandler(this);
myActivity = this;
this.init();
Cocos2dxHelper.init(this, this);
}
@Override
public void showDialog(final String pTitle, final String pMessage) {
if (pTitle.equals("command")&&pMessage.indexOf("iconAd") >= 0) {
String[] str = pMessage.split("@");
if (str[1].equals("0")) {
// アイコン型広告非表示
myActivity.dispIconAdView(false);
} else {
// アイコン型広告表示
myActivity.dispIconAdView(true);
}
}
}
}
public void init() {
// FrameLayout
ViewGroup.LayoutParams framelayout_params =
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
FrameLayout framelayout = new FrameLayout(this);
framelayout.setLayoutParams(framelayout_params);
// Cocos2dxEditText layout
ViewGroup.LayoutParams edittext_layout_params =
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
Cocos2dxEditText edittext = new Cocos2dxEditText(this);
edittext.setLayoutParams(edittext_layout_params);
// ...add to FrameLayout
framelayout.addView(edittext);
// Cocos2dxGLSurfaceView
this.mGLSurfaceView = this.onCreateView();
// ...add to FrameLayout
framelayout.addView(this.mGLSurfaceView);
this.mGLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());
this.mGLSurfaceView.setCocos2dxEditText(edittext);
// アイコン型広告処理
RelativeLayout adMain = new RelativeLayout(this);
this.initIconAd();
// 広告用RelativeLayoutに追加←RelativeLayoutがキーポイント!
adMain.addView(iconAdView);
// フレームレイアウトに追加
framelayout.addView(adMain);
// Set framelayout as the content view
setContentView(framelayout);
}
/**
* アイコン型広告初期化
*/
private void initIconAd()
{
iconAdView = new LinearLayout(this);
RelativeLayout.LayoutParams layoutParams =
new RelativeLayout.LayoutParams(FP, (int)(80 * getResources().getDisplayMetrics().density));
// 中央揃え
iconAdView.setGravity(Gravity.CENTER_HORIZONTAL);
iconAdView.setLayoutParams(layoutParams);
// アイコン型広告識別コード設定
iconAd = new IconLoader<Integer>(_MEDIA_CODE, this);
// 更新インターバル15秒
iconAd.setRefreshInterval(15);
// 今回は4つのアイコンを設置します
for (int ii=0; ii<4; ii++) {
final LinearLayout iconAdSubView = new LinearLayout(Cocos2dxActivity.this);
LinearLayout.LayoutParams layoutSubParams = new LinearLayout.LayoutParams(1, (int)(80 * getResources().getDisplayMetrics().density), 1.0f);
iconAdSubView.setLayoutParams(layoutSubParams);
// ここでIconAd.javaを呼び出します
new IconAd(Cocos2dxActivity.this, iconAdSubView, iconAd);
// 設定したアイコンデータをViewに追加する
iconAdView.addView(iconAdSubView);
}
}
}
これで上部に表示されました。

下に表示したい場合はこうします。
ALIGN_PARENT_BOTTOMを指定します。
/**
* アイコン型広告初期化
*/
private void initIconAd()
{
iconAdView = new LinearLayout(this);
RelativeLayout.LayoutParams layoutParams =
new RelativeLayout.LayoutParams(FP, (int)(80 * getResources().getDisplayMetrics().density));
// ALIGN_PARENT_BOTTOMを指定します
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
iconAdView.setGravity(Gravity.CENTER_HORIZONTAL);
iconAdView.setLayoutParams(layoutParams);
iconAd = new IconLoader<Integer>(_MEDIA_CODE, this);
iconAd.setRefreshInterval(15);
for (int ii=0; ii<4; ii++) {
final LinearLayout iconAdSubView = new LinearLayout(Cocos2dxActivity.this);
LinearLayout.LayoutParams layoutSubParams = new LinearLayout.LayoutParams(1, (int)(80 * getResources().getDisplayMetrics().density), 1.0f);
iconAdSubView.setLayoutParams(layoutSubParams);
new IconAd(Cocos2dxActivity.this, iconAdSubView, iconAd);
iconAdView.addView(iconAdSubView);
}
}
はい、下に出ました

任意の高さに出す場合は
/**
* アイコン型広告初期化
*/
private void initIconAd()
{
iconAdView = new LinearLayout(this);
RelativeLayout.LayoutParams layoutParams =
new RelativeLayout.LayoutParams(FP, (int)(80 * getResources().getDisplayMetrics().density));
// 一旦下に表示させる
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
// ディスプレイのインスタンス生成
Display disp = wm.getDefaultDisplay();
// 画面のheightを取得して比率を計算して下から120pxの位置に表示させる
int yPos = (disp.getHeight() * 120) / 480;
layoutParams.setMargins(0, 0, 0, yPos);
iconAdView.setGravity(Gravity.CENTER_HORIZONTAL);
iconAdView.setLayoutParams(layoutParams);
iconAd = new IconLoader<Integer>(_MEDIA_CODE, this);
iconAd.setRefreshInterval(15);
for (int ii=0; ii<4; ii++) {
final LinearLayout iconAdSubView = new LinearLayout(Cocos2dxActivity.this);
LinearLayout.LayoutParams layoutSubParams = new LinearLayout.LayoutParams(1, (int)(80 * getResources().getDisplayMetrics().density), 1.0f);
iconAdSubView.setLayoutParams(layoutSubParams);
new IconAd(Cocos2dxActivity.this, iconAdSubView, iconAd);
iconAdView.addView(iconAdSubView);
}
}
下から120dipの場所に表示されました。

こんな感じで表示されます。
スポンサーサイト