ここ3日間、広告をアプリに乗せるテストをしているのですが、まず第一段階と考えていたadmobを載せるのがうまくいきません。 ただ、この問題は私がAndroid側(JAVA)についての知識がないので、とても簡単に解決できる問題だと思うのですが、とりあえずどのような問題なのかをブログに書きます。
【追記 9/15】 無事、中央下にadmobを表示することができました。
広告が画面下に配置できない
やり方として、下記cocos2dxのレシピ本に、iPhoneとAndoridにadmobを載せるやり方が載っていましたので、これを参考にしました。
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」を使えば、画面のサイズを上手く利用できそうなのですが、画面中央に表示できません。
「MATCH_PARENT」は、画面の最大値を取得するので、これを使えばうまく表示できると思ったのですが、「私のコードが悪いの」か、「デバイスの問題なの」か画面下に広告を持っていくことができませんでした。
ちなみに「MATCH_PARENT」の対局にある「WRAP_CONTENT」の場合
これは、広告が画面の右上に表示されています。
【追記 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]
広告が画面下に表示されるが、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で作成したゲーム画面が表示されません。
おそらく、広告だけが画面に設置されて、cocos2dxの画面が設置されていない。もしくは、広告の画面が上にきてcocos2dxの画面が見えていないことが考えられますが、どうしたらいいのかわかりません。
最後に
admobを導入するのは、admobメディエーションを設置する準備段階としてやっていたのですが、Android側で見事に完全に行き詰っています。 cocos2dxとadmob(広告)の情報が少ないので、Androidに関しての知識が多少無いと、とても難しいですね。
がおまるさんのブログに「cocos2d-xにAdmobメディエーション」という直球の記事があるのですが、内容が全然ワケワカメなので、とても参考になりそうにもないです。
もし、何か良いやり方、ここが間違っているといった点があれば教えて欲しいです。