*導入 [#u13bdaeb] まず、通常のAndroidアプリで広告を表示できないとANEを作成することはできません。ここではAndroidアプリでAdmobの広告を表示し、そこから必要なファイルを抜き出す方法を紹介します。 こちらの内容は「[[AndroidでのANEの作成1_Android側の作成]]」にそった方法で行いますので、そちらも参考にして下さい。 また、こちらではAdmobの広告IDを使いますので、あらかじめテスト用のAndroidのアプリの登録とそのID、バナー広告用のID、インタースティシャル広告のIDを用意しておいて下さい。 *プロジェクトの作成 [#ad273fc2] 最初にAndroid Studioでプロジェクトの作成を行います。 &ref(admobNewProject.jpg,mw:480,mh:360); 名前は好きな物でかまいません。 次のターゲットは「Phone and Tablet」として、Minimum SDKは特に理由が無ければAPI10にしておくと良いでしょう。 &ref(admobTarget.jpg,mw:480,mh:360); 次のActivityは余計なものが無い方がやりやすいので「Empty Activity」にしておきます。 &ref(admobActivity.jpg,mw:480,mh:360); Activityの名前はそのままMainActivityにしておきます。 &ref(admobActivityCustomize.jpg,mw:480,mh:360); 「Finish」ボタンを押すとプロジェクトが作成されます。 *テスト用ボタンの作成 [#i8d2c989] 動作確認を行うためのテスト用ボタンを配置します。 「[[AndroidでのAdmobのANEの作成]]」でも説明したように、このANEには以下の機能があります。 -各種IDの設定 -バナー広告の表示 -バナー広告の非表示 -インタースティシャル広告のロード -インタースティシャル広告の表示 このうち最初の「各種IDの設定」については内部的に一度行うだけのもので、インタラクティブである必要はありません。 よって残りの4つについて、それぞれの機能を確認できるように4つボタンを配置します。 ボタン配置方法の詳細は[[こちらの記事で:http://njf.jp/cms/modules/xpwiki/?Android%E3%81%A7%E3%81%AEANE%E3%81%AE%E4%BD%9C%E6%88%901_Android%E5%81%B4%E3%81%AE%E4%BD%9C%E6%88%90#gf75d92b]]ご紹介しているので、ここでは結果だけを表示します。 &ref(admobTestBtns.jpg,mw:480,mh:360); ちょっとずれていますが、Androidのレイアウト調整は結構面倒なのでテスト用と割り切って細かな配置などにはこだわらないでおくのがお勧めです。 それぞれ以下のようにテキストとIDを割り振っています。 |ID|テキスト| |showBannerBtn|SHOW BANNER| |hideBannerBtn|HIDE BANNER| |loadInterstitialBtn|LOAD INTER| |showInterstitialBtn|SHOW INTER| *ANE用のライブラリの作成 [#qcd3a06a] 次にテスト用のActivityなどと主処理を分離するために、ライブラリを作成します。 File->New->New Moduleを選択します。 &ref(admobNewModule.jpg,mw:480,mh:360); Android Libraryを選びます。 &ref(admobNewLibrary.jpg,mw:480,mh:360); 名前はANEAdmobとしておきます。 &ref(admobLibraryName.jpg,mw:480,mh:360); Finishボタンを押せばライブラリが作成されます。 *Google Play Servicesの追加 [#ua4e58f1] (この部分については[[公式ページ:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start?hl=ja]]も参考にして下さい。) Admobの表示にはGoogle Play Servicesが必要です。それを使えるようにするために、まずAndroid Studioで「Tools->Android->SDK Manager」を選択し、さらにSDK Toolsタブを選び、「Google Play Services」と「Google Repository」にチェックを入れます。 &ref(admobGooglePlayServiceUpdate.jpg,mw:480,mh:360); すると次回起動時などにそれらも自動更新されます。 すぐにインストールやアップデートしたい場合は、ウインドウ下部に「Launch Standalone SDK Manager」というリンクがあるので、そこからスタンドアロン版SDKマネージャーを立ち上げてインストールまたはアップデートして下さい。 次にaneadmobのライブラリの中のbuild.gradleのdependenciesに「play-services-ads」を加えます。 &ref(admobBuildGradle.jpg,mw:480,mh:360); 例えばver.9.2.1なら compile 'com.google.android.gms:play-services-ads:9.2.1' とします。 または compile 'com.google.android.gms:play-services-ads:9.+' とすると、ver.9で一番新しいものが使われます。 ただし、ANEの製作では後でGoogle Play Servicesのバージョン番号を使うので、この記法よりもバージョンを明記しておいたほうがトラブルが起こりにくく、こちらの「+」を使った表記はあまりおすすめしません。(マイナーバージョンの違いのみなのでさほど問題は起こらないとは思いますが。) build.gradleはあちこちにありますが、aneadmobの下のものなので間違えないようにして下さい。 するとdependencies部分はバージョン部分を除いて以下のようになります。 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.google.android.gms:play-services-ads:9.2.1' } あとは「Sync Now」という表示が出ていると思うので、それをクリックしてgradleファイルの内容をプロジェクトに反映させれば、Admobの広告表示に必要なライブラリの取り込みができます。 *主処理の追加とAndroidアプリとしてのテスト [#o254a294] 広告表示の主処理となる部分を作っていきますが、あとでANEとして分離させないといけないので、サンプルなどにあるようにActivityに直接処理を書くわけにはいきません。admobaneライブラリの中に別クラスを作ってそこに主処理を書きます。 一方、Activityの方は、それを呼び出すテスト用のコードのみになるようにします。 まず 「aneadmob->src->main->java->jp.njf.admob」の下にANEAdmobというクラスを作成します。 &ref(admobANEAdmobClass.jpg,mw:480,mh:360); 前述しましたが、このANEには以下の機能を実装予定です。 -各種IDの設定 -バナー広告の表示 -バナー広告の非表示 -インタースティシャル広告のロード -インタースティシャル広告の表示 最初の「各種ID」とは、AdmobのアプリケーションID、バナーID、インタースティシャルIDの3つです。 よってこのクラスには以下のpublicなメソッドが必要です。 |メソッド名|引数|機能| |setAppID|アプリケーションID(String型)|アプリケーションIDを設定する| |setBannerID|バナーの広告ID(String型)|バナーの広告IDを設定する| |setInterstitialID|インタースティシャルの広告ID(String型)|インタースティシャルの広告IDを設定する| |showBanner|なし|バナー広告の表示| |hideBanner|なし|バナー広告の非表示| |loadInterstitial|なし|インタースティシャル広告のロード| |showInterstitial|なし|インタースティシャル広告の表示| 戻り値は全てなし、つまりvoid型メソッドです。 ここで「インタースティシャル広告のロード」については説明が必要かも知れません。インタースティシャル広告は全画面で表示され、場合によっては動画なども含まれるため、データ容量が大きく、ネットから広告データをロードするのに時間がかかります。 それを素早く表示するためには、あらかじめロードしておいて、それが完了していたら表示する、という手順をふむことになります。ロードの直後にすぐ表示しようとすると、ロードが終わっていないのでたいてい失敗します。 例えば、画面遷移5回毎に表示するなら一回目でロードし、4回も画面遷移すれば多分ロードは終わっているでしょうから、5回目の画面遷移で広告を表示する、といったふうに使います。そのため、ロードと表示のメソッドは分けておく必要があるのです。 *ANE呼び出し処理の追加 [#i5cd3b6c] 制作中
(This host) = https://njf.jp