ここ3日間、広告をアプリに乗せるテストをしているのですが、まず第一段階と考えていたadmobを載せるのがうまくいきません。
ただ、この問題は私がAndroid側(JAVA)についての知識がないので、とても簡単に解決できる問題だと思うのですが、とりあえずどのような問題なのかをブログに書きます。
【追記 9/15】
無事、中央下にadmobを表示することができました。
広告が画面下に配置できない
やり方として、下記cocos2dxのレシピ本に、iPhoneとAndoridにadmobを載せるやり方が載っていましたので、これを参考にしました。
![]() | Cocos2d‐x開発のレシピ―iOS/Android対応 松浦 晃洋,齊藤 建二,古木 映治 秀和システム 売り上げランキング : 33010 Amazonで詳しく見る |
だだ、初版では、記述にエラーがあるので、そのままコードを打ち込んでもうまく表示できません。
facebookの公式ページの中で「白井廉人」さんがそのことについて質問されていました。
Cocos2d-x 開発のレシピ
これを参考にコードを打ち込むと、広告がcocos2dxの画面に表示されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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に載っている解説では、下記コードで広告の場所を指定できるみたいですが、うまくいきません。
1 |
LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(xxxx.xxxxx); //ここに表示したい場所(width,height)を指定 |
色々調べると、「MATCH_PARENT」を使えば、画面のサイズを上手く利用できそうなのですが、画面中央に表示できません。
「MATCH_PARENT」は、画面の最大値を取得するので、これを使えばうまく表示できると思ったのですが、「私のコードが悪いの」か、「デバイスの問題なの」か画面下に広告を持っていくことができませんでした。
ちなみに「MATCH_PARENT」の対局にある「WRAP_CONTENT」の場合
これは、広告が画面の右上に表示されています。
【追記 9/15】 解決
無事解決できました。LinearLayoutをFrameLayoutに変えたところ上手く表示ができました。
1 2 3 4 5 6 7 8 9 |
//以前のコード 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); |
広告が画面下に表示されるが、cocos2dxで作成した画面がでてこない
そこで、広告を画面中央に配置している情報がないか調べたところ、cocos2dxではなく通常のAndroidでのやり方があったので、これをやってみることにしました。ここを参考にしました。
androidで稼げるのか: admobの広告を画面下に設置する
実際のコードはこのような感じです。
1 2 3 4 5 6 7 8 9 |
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で作成したゲーム画面が表示されません。
おそらく、広告だけが画面に設置されて、cocos2dxの画面が設置されていない。もしくは、広告の画面が上にきてcocos2dxの画面が見えていないことが考えられますが、どうしたらいいのかわかりません。
最後に
admobを導入するのは、admobメディエーションを設置する準備段階としてやっていたのですが、Android側で見事に完全に行き詰っています。cocos2dxとadmob(広告)の情報が少ないので、Androidに関しての知識が多少無いと、とても難しいですね。
がおまるさんのブログに「cocos2d-xにAdmobメディエーション」という直球の記事があるのですが、内容が全然ワケワカメなので、とても参考になりそうにもないです。
