PhoneGapで広告を付ける

Androidアプリ用の広告は、SDKとして、Viewを作成するjarが用意され、XMLのレイアウトファイルに設定するのが主流みたいですね。
PhoneGapで作成したアプリの場合、res/layout/main.xmlに設定しても反映されないみたいです。
そういえば、App.javaの
setContentView(R.layout.main);
とってしまいますものね。

AdMobを入れたら動かなくなっでも、述べましたが、PhoneGapのandroidアプリにAdMobを設定する方法が、GoogleのガイドでJavaによる追加方法があり、一応追加できました。(AVDとかでは、上手く動くのですが、私にHTC Jでは、DBのクリア問題が発生しています。)

XMLによる追加の方法などもあり、PhoneGapのアプリでも、XMLで指定した広告(View)を表示できるのではないかと調査しました。

LayoutInflaterというのを使って、XMLのレイアウトを繰り返し部分を別のXMLファイルを使っているのを見つけました。
LayoutInflaterを使うと、通常setContentView()で設定したレイアウトXMLファイルしか扱えないのが、他のxmlリソースのViewを扱えます。


広告用のXMLファイルは、res/layout/ad.xmlに用意しておいて、App.javaのsuper.loadUrl()の後に以下の様なコードを書けばOK.

        LayoutInflater factory = LayoutInflater.from(this);
        View layInfView = factory.inflate(R.layout.ad, null);
        View adView = layInfView.findViewById(R.id.adView);
        ViewGroup parent = (ViewGroup) adView.getParent(); 
        if ( parent != null ) {
            parent.removeView(adView);
        }
        LinearLayout layout = super.root;
        layout.addView(adView);

R.id.adViewは、ad.xml内の広告viewのIDで、このIDをもとにviewを取り出し、PhoneGapで使っているLinearLayoutに追加するという処理です。
ポイントとしては、ad.xml内のviewは、そちらの親の下にあるので、親から切り離さないといけないところ。

タグ: ,
カテゴリー: 開発環境

コメントを残す