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

【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の画面に表示されました。


    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());






問題

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


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


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

WRAP_CONTENT2013-9-14.png


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


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

WRAP_CONTENT2013-9-14.png



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


【追記 9/15】 解決

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

        //以前のコード
      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);



2013-9-15-ffdvvc.png




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

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

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

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

          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());
		 



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

2013-9-14-jjjjjssjjjjjs


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


最後に

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

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

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

Related Posts Plugin for WordPress, Blogger...