ウェブ、ショウジン

AdMob広告をAndroidアプリで表示させる

2012-7-8
Category
スマートフォン・アプリ

2012/07/07時点でのAdMob SDKの最新バージョンは6.0.1。

これを使うにはAndroid SDKを最新のものにする必要があるらしい。

以下に記録した内容でAndroid SDK及びADTを最新版に更新して、サンプルアプリを用意してみた。

AdMobのSDK 6.0.1を利用するためにAndroid SDKを最新のもの(r20)に更新する

ここまでの準備をした上で、以下の公式ガイドを実践してみる。

Google AdMob Ads Android(初級)

新規プロジェクトを用意する

最新のAdMob SDK(6.0.1)はBuild SDKのターゲットがAndroid 3.2以上でないとダメらしいので、Build SDKを3.2に指定。Minimum Required SDKを2.2に指定して作ってみる。

Build SDKの条件を満たしていない既存のアプリでこのAdMob SDKを利用したい場合はそのプロジェクトフォルダ直下にある「project.properties」の
# Project targetの部分でtargetに「android-13」を指定すればよいみたい。

# Project target.
target=android-13

新規Android Projectを作成

Build SDKとMinimum Required SDKに注意して設定。

*Package Nameはテストなのでこれで。

アプリのランチャーアイコンを適当に指定。

Activityはデフォルトのままで進める。

Activityの設定もとりあえずデフォルトのまま進める。

Finishでサンプルアプリ「AdMobTest2」を、とりあえずビルド完了。

AdMob SDKをインポート

プロジェクトのディレクトリを選択して右クリックからImportを選択。

ダウンロード済みのAdMob SDKを指定してプロジェクトにSDKをImportしておく。

ダウンロードした「googleadmobadssdkandroid.zip」を「Archive File」で指定してインポート。

インポートすると自動でzipファイルは展開される。

AdMob SDK JARをビルド・パスで追加する

該当プロジェクトのルートディレクトリを選択して右クリックし、Propertiesを選択。

左メニューからJava Build Pathを選択して右側上部にあるLibrariesタブをクリック。

Add JARs…をクリックして、プロジェクトにインポート済みのGoogleAdMobAdsSdk-6.0.1.jarを選択してOKをクリック。

OKをクリックして、.jarファイルが追加されたらまたOKをクリック。

これでAdMob SDKの.jarファイルがプロジェクトに追加された。

com.google.ads.AdActivityの宣言

AndroidManifest.xml で com.google.ads.AdActivityの宣言を追加する。

/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.cielweb.admobtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
    </application>

</manifest>

application要素の閉じタグの前の

<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

が追加した部分。

パーミッションを追加

AdMob広告を表示するのに必要なuses-permissionを追加する。

/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="info.cielweb.admobtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
    </application>
   
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

manifest要素の閉じタグの直前の

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

が追加した部分。

com.google.ads.AdView を追加

AdMob広告をHTML5を使って表示するためのAdViewを追加する。
*AdViewはViewのサブクラスのひとつ。

com.google.ads.* をインポートする

広告を表示するアプリのActivityファイル(この例ではMainActivity.java)にcom.google.ads.* ライブラリをインポートする。

import com.google.ads.*;

インポートしても、まだ実際には使用されていないライブラリには電球アイコンがついている。とりあえずこのまま進める。

onCreateブロックに広告表示に必要な内容を記述

公式ガイドにある記述をそのまま記述してみる。

// adView を作成するadView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);

// 属性 android:id="@+id/mainLayout" が与えられているものとして
// LinearLayout をルックアップする
LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);

// adView を追加
layout.addView(adView);

// 一般的なリクエストを行って広告を読み込む
adView.loadAd(new AdRequest());

するとこんなふうにいくつか警告がでる。

「adView」を宣言していないので、MainActivityクラスの宣言の冒頭で宣言する。

private AdView adView;

パブリッシャーIDを記述

AdMobに登録したアプリに割り当てられているパブリッシャーIDをMY_AD_UNIT_IDと置き換える。

*ダブルクォーテーションで囲まないと警告がでるので注意。

ブレイクポイントがついてしまうので、これをダブルクリックして消す。

*パブリッシャーIDの調べ方
AdMobの管理画面から「サイト及びアプリケーション」に進み、ページ下部にある登録済みの該当アプリケーションにマウスオーバーすると「設定を管理」というボタンが表示されるので、それをクリックして遷移先のページで確認できる。

LinearLayoutライブラリをインポート

LinearLayoutを使っているのに、そのために必要なライブラリを読み込んでいないので、これをインポート。

import android.widget.LinearLayout;

レイアウトxmlファイルに広告表示のための記述を追加

MainActivity.javaで使用するレイアウトxmlファイル(/res/layout/activity_main.xml)に以下の記述を追加。場所は広告を表示させたいところに。

<LinearLayout
android:id="@+id/admob"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>

ここで「android:id=”@+id/admob”」としているのでこれに合わせてActivityのソースも変更する。

MainActivity.java

// 属性 android:id="@+id/admob" が与えられているものとして
// LinearLayout をルックアップする
LinearLayout layout = (LinearLayout)findViewById(R.id.admob);

まだ警告アイコンが出ていたら、ProjectメニューからClean…を実行する。

警告アイコンが消えた。

あと、具体的にどういう処理なのか理解してないけど、公式ガイドにあった以下の記述もMainActivity.javaに追加しておく。

@Override
  public void onDestroy() {
    adView.destroy();
    super.onDestroy();
  }

あと、使っていないライブラリのインポートを削除しておく。

仮想デバイス(AVD)で実行してみる

激しくエラーがでてダメ。

数時間かかったけど、検索でいろいろ調べて(主に欧米圏)なんとなくあたりがついたので、プロジェクトにインポート済みのAdMob SDKの.jarファイルをPackage Explorer上でコピーして、libsフォルダにペーストしてみることにする。libsフォルダがない場合は作る。(プロジェクトのルートディレクトリ直下に)

再度、仮想デバイスで実行してみる。

今度は無事表示された。

最初のほうでAdMob SDKのJARをビルド・パスで追加したけれど、試しにこれをRemoveしても問題なくアプリは実行でき、広告も表示された。ようはlibsフォルダを用意して、その中にAdMob SDKの.jarファイルを入れておけば読みにいってくれるということだろうか。

広告表示は確認できたけど、広告を実際にタップした際の挙動の確認はできていない。

そこを確認する場合にはテストモードにする必要があるので
その際には以下を参考に試してみること。

テスト広告のリクエスト | ベスト プラクティス – Google Developers

Categories

Tag Cloud

AdMob Android Apache centos CodeIgniter EC-CUBE facebookアプリ facebookページ feed Firefox Flash google googleanalytics htaccess iPad iPhone JavaScript lamp mobile nginx ogp pear php plugin rollover rss sendmail setting smarty ssh Titanium Mobile Titanium Studio tutorial ubuntu vim VirtualBox vmware vps Windows WordPress xampp youtube さくらインターネット アクセス解析 カスタム投稿