Android アプリへの登録方法が前から少し変わっていたので、メモ。
アカウントの取得方法などは、他のサイトに書かれてるので、適当にぐぐってください。
以下、Android アプリに広告を入れる方法。
■AdMob に login して
の、
をクリック
■アプリ選択画面になるので、
をクリック
■App name: に適当に入れる(後で変更できる)
■Android Package URL: は、http://market.android.com/search?q=pname:<package name> とする。<package name> に自分のアプリのパッケージネームを入れる。
拙作の CPUMonitorMini の場合は、http://market.android.com/search?q=pname:ms.salt.cpumonitormini。(後で変更できる)
■Category: App description: は適当に。(後で変更できる)
■最後に、
を押すと、SDK のダウンロード画面に行く。
けど、既にダウンロードしてあれば必要無し。
アプリ名に依ってバイナリが変わる訳ではない。
■
に戻ると、リストに追加されているので、
をクリック
■アプリ名の下に、Publisher ID: が表示されているので、コピー
(以下、”abcdefghijklmno” と仮定する)
■アプリの AndroidManifest.xml の <application> </application> の直下に
<meta-data android:value="abcdefghijklmno" android:name="ADMOB_PUBLISHER_ID"/>
を追加。
■同じく、<manifest> </manifest> の直下に
<uses-permission android:name="android.permission.INTERNET" />
を追加。
■アプリのディレクトリに libs ディレクトリを作り、AdMob SDK に入っている admob-sdk-android.jar をコピー
■eclipse の Package Explorer で、アプリを右クリックして、[Refresh]
■同じく、eclipse の Package Explorer で、アプリを右クリックして、[Properties] → [Java Build Path] → [Libraries] タブ → [Add jars..] ボタン→先程コピーした admob-sdk-android.jar を選択→[OK] ボタンで閉じる
■res/values/attrx.xml を作る
アプリの res/values で右クリック→[New]→[Ohter..]→[Android XML File]→Fileに attrs.xml と入れて[Finish]→中身をヘルプ通りに
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="com.admob.android.ads.AdView">
<attr name="backgroundColor" format="color" />
<attr name="primaryTextColor" format="color" />
<attr name="secondaryTextColor" format="color" />
<attr name="keywords" format="string" />
<attr name="refreshInterval" format="integer" />
</declare-styleable>
</resources>
とする
■広告を入れたいレイアウトリソース(res/layout/foo.xml)の中のレイアウト(LinearLayout とか RelativeLayout とか)のタグの attribute に
xmlns:app=”http://schemas.android.com/apk/res/<package name>”
を追加し(<package name> はアプリのものに置き換える)、
要素として、
<com.admob.android.ads.AdView
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:backgroundColor="#000000"
app:primaryTextColor="#FFFFFF"
app:secondaryTextColor="#CCCCCC"
/>
を追加する。
タグの attribute で指定した xmlns: の後の app と、要素の attribute の app を合わせればいいので、myapp とかにして説明しているところもあるけど適当でOK。
■個人的には、xml の inflation が微妙に遅いので使いたくない。。。
そういう場合は、java のコードで、
AdView adView = new AdView(this);
adView.setVisibility(android.view.View.VISIBLE);
adView.requestFreshAd();
adView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); mLinearLayout.addView(adView); // LinearLayout に追加
という感じで、LayoutView に add すれば OK。
xml での layout はすごくすごく便利なのだけど、inflation が遅いので気を付けましょう。
xml ファイルは、apk にした時点で binary に変換されてるけど、java の object になっている訳ではなく、inflateする時に java の object を生成しています。(と思っています。)
なので、直接 java のコードでガリガリ書いたものに比べると、数倍~十数倍ぐらいの時間がかかります。
(実際にベンチマークテストしたのは animation 用の xml だけですけどね。たいして複雑でもないのに、15倍ぐらいの時間がかかってました。)
まぁ、自前で xml を parse することを考えてみると、時間がかかるのは自明ですよね~
■あと、注意点は、横幅が 320 dot ないと、広告が全く表示されない、ということです。
レイアウト(LinearLayout や RelativeLayout)の attribute が、android:layout_width="wrap_content" だったりすると、中の要素で width が 320 dot になるものが無い限り広告は表示されないみたいです。
popup させた AlertDialog の中に入れようとしましたが、popup した時点で 300 dot ぐらいになるため、広告が全く表示されませんでした。その場合でも、landscape 表示にすれば、AlertDialog の中でも表示されたので、横幅に影響していると思われます。
最近のコメント