【cocos2dx】admobが中央下に配置できない。(解決しました)

ここ3日間、広告をアプリに乗せるテストをしているのですが、まず第一段階と考えていたadmobを載せるのがうまくいきません。 ただ、この問題は私がAndroid側(JAVA)についての知識がないので、とても簡単に解決できる問題だと思うのですが、とりあえずどのような問題なのかをブログに書きます。

【追記 9/15】 無事、中央下にadmobを表示することができました。

広告が画面下に配置できない

やり方として、下記cocos2dxのレシピ本に、iPhoneとAndoridにadmobを載せるやり方が載っていましたので、これを参考にしました。

Cocos2d‐x開発のレシピ―iOS/Android対応Cocos2d‐x開発のレシピ―iOS/Android対応
松浦 晃洋,齊藤 建二,古木 映治

秀和システム
売り上げランキング : 33010

Amazonで詳しく見る

だだ、初版では、記述にエラーがあるので、そのままコードを打ち込んでもうまく表示できません。 facebookの公式ページの中で「白井廉人」さんがそのことについて質問されていました。 Cocos2d-x 開発のレシピ

これを参考にコードを打ち込むと、広告がcocos2dxの画面に表示されました。

[c]

private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; 
private final int MP = LinearLayout.LayoutParams.MATCH_PARENT;

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

    adView = new AdView(this , AdSize.BANNER,"admobのパブリッシャー番号");



//間違っているコード(下三行)
LinearLayOut layout = super.root;
layout.addView(adView);
layout.setHorizontalGravity(andorid.view.Gracvity.CENTER_HORIZONTAL);



//正しいコード(2行)

  LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(WIDTH,HEIGHT); //ここに表示したい場所   addContentView(adView, adParams);

//広告をリクエスト
adView.loadAd(new AdRequest());

[/c]

問題

広告は表示されるのですが、問題は、画面の中央下に広告を移動させることができないことです。 facebookに載っている解説では、下記コードで広告の場所を指定できるみたいですが、うまくいきません。

[c]

LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(xxxx.xxxxx); //ここに表示したい場所(width,height)を指定

[/c]

色々調べると、「MATCH_PARENT」を使えば、画面のサイズを上手く利用できそうなのですが、画面中央に表示できません。

WRAP_CONTENT2013-9-14.png

MATCH_PARENT」は、画面の最大値を取得するので、これを使えばうまく表示できると思ったのですが、「私のコードが悪いの」か、「デバイスの問題なの」か画面下に広告を持っていくことができませんでした。

ちなみに「MATCH_PARENT」の対局にある「WRAP_CONTENT」の場合

WRAP_CONTENT2013-9-14.png

これは、広告が画面の右上に表示されています。

【追記 9/15】 解決

無事解決できました。 LinearLayoutをFrameLayoutに変えたところ上手く表示ができました。 [c]

    //以前のコード

   LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(WC,WC); //ここに表示したい場所    addContentView(adView, adParams);

    //このように変更をしました。
    FrameLayout.LayoutParams adParams = new FrameLayout.LayoutParams(WC,WC);
    adParams.gravity = (Gravity.BOTTOM|Gravity.CENTER); 
    addContentView(adView, adParams);

[/c]

2013-9-15-ffdvvc.png

広告が画面下に表示されるが、cocos2dxで作成した画面がでてこない

そこで、広告を画面中央に配置している情報がないか調べたところ、cocos2dxではなく通常のAndroidでのやり方があったので、これをやってみることにしました。

ここを参考にしました。 androidで稼げるのか: admobの広告を画面下に設置する

実際のコードはこのような感じです。

[c] RelativeLayout.LayoutParams Relayout = new RelativeLayout.LayoutParams ( RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT); Relayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); // 下にセットするようにする adView.setLayoutParams(Relayout);

      RelativeLayout layout = new RelativeLayout(this); 
      layout.addView(adView);         
      setContentView(layout);

      adView.loadAd(new AdRequest());

[/c]

これですと、画面中央下に広告が表示されますが、肝心のcocos2dxで作成したゲーム画面が表示されません。

2013-9-14-jjjjjssjjjjjs

おそらく、広告だけが画面に設置されて、cocos2dxの画面が設置されていない。もしくは、広告の画面が上にきてcocos2dxの画面が見えていないことが考えられますが、どうしたらいいのかわかりません。

最後に

admobを導入するのは、admobメディエーションを設置する準備段階としてやっていたのですが、Android側で見事に完全に行き詰っています。 cocos2dxとadmob(広告)の情報が少ないので、Androidに関しての知識が多少無いと、とても難しいですね。

がおまるさんのブログに「cocos2d-xにAdmobメディエーション」という直球の記事があるのですが、内容が全然ワケワカメなので、とても参考になりそうにもないです。

もし、何か良いやり方、ここが間違っているといった点があれば教えて欲しいです。