Google OS実験室 ~Moonlight 明日香~

GoogleのAndroidで遊び始めて, すでに6年以上が経った. Androidは思った以上の発展を遂げている. この技術を使って, 新しいことにチャレンジだ!!

アプリ

AdLantis広告を表示する

AdMobやAdMakerの他にも, AdLantis[1]も同様の広告配信を行っている.
そこで, AdLantisの配信する広告をアプリケーションに表示させてみることにした.

1. 準備[2]
1.1 AdLantisユーザ登録
ここからユーザ登録する.
AdLantis1
 1) 新規アカウントの作成を行う.
1.2 AdLantis SDKのダウンロード
 1) AdLantis TechNoteの
ここからAdLantis SDKをダウンロードする.
   7/21時点のダウンロードファイル:anlantis_android_sdk_1.3.2.zip
 2) AdLantis SDKを解凍する.
   解凍したAdLantis SDK:anlantis_android_sdk_1.3.2
1.3 広告枠の作成
 1)
AdLantis for Smartphoneにログインする.
 2) "広告枠の管理"を選択し, "新規作成"をクリックする.
 3) "広告枠の種類"を"アプリケーション専用広告枠"にする.
Adlantis2
 4) 広告枠名やアプリケーション名等を入力し, "作成"をクリックする.
 5) 広告枠情報が表示される.
   広告枠コードは, アプリケーション作成の際に必要となるので控えておく.

2. AdLantis広告の表示[2]
2.1 プロジェクトの作成
 1) AdlantisSampleのプロジェクトを作成する.
2.2 AdLantis SDKの組み込み
 1) AdlantisSample以下にlibsディレクトリを作成する.
 2) libsディレクトリに, ダウンロードしたAdLantis SDKの中にあるadlantis.jarをコピーする.
 3) adlantis.jar上で右クリック→Build Path→Add to Build Pathを選択し, ライブラリパスを設定する.
Adlantis3
2.3 広告バナー表示プログラム
 1) layout/main.xml
   レイアウトファイルに, 広告枠コードのレイアウト情報を追加する.
   <?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
     <jp.Adlantis.Android.AdlantisView
       android:id="@+id/adView"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:layout_centerHorizontal="true"
       />
   </LinearLayout>
 2) AdlantisSample.java
   特に変更なし
 3) AndroidManifest.xml
   ネットワークアクセス等を許可するために, "INTERNET", "ACCESS_NETWORK_STATE"と"READ_PHONE_STATE"のパーミションを設定する.
   広告枠コードのAdlantis_Publisher_ID情報を設定する.
   <?xml version="1.0" encoding="utf-8"?> 
   <manifest xmlns:android="
http://schemas.android.com/apk/res/android"
     package="com.moonlight_aska.android.adlantissample"
     android:versionCode="1"
     android:versionName="1.0">
     <uses-sdk android:minSdkVersion="8" />
     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

     <application android:icon="@drawable/icon" android:label="@string/app_name">
       <activity android:name=".AdlantsiSample"
         android:label="@string/app_name">
         <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
       </activity>
       <meta-data android:name="Adlantis_Publisher_ID" android:value="NzkxMQ%3D%3D%0A" />
     </application>
   </manifest>
2.4 アプリケーションの実行
SH-03C(SHARP, Android 2.2)で動作確認してみた.
Adlantis4


----
参照URL:
 [1]
AdLantis「アドランテイィス」
 [2] AdLantis Android SDK - AdLantis TechNote



AdMaker広告を表示する

"AdMob広告を表示する"で, AdMobが配信する広告の表示を試してみたが, フィルタの設定も関係してか, 広告の表示に失敗することが多い.
そこで, 類似のサービスを行っているAdMaker[1]
の配信する広告をアプリケーションに表示させてみることにした.

1. 準備[2]
1.1 AdMakerユーザ登録
ここから新規アカウント登録する.
AdMaker1
 1) パブリッシャー情報を入力する.
 2) メディア情報を入力する
AdMaker2
   暫定的に, AdmakerSample/Androidアプリを入力した.
 3) ”登録"をクリックすると, 以下のような広告配信SDKのダウンロードやメディア別広告配信URLが発行される.
   しかし, 7/19時点では広告配信SDKのバージョンが古いもの(AdnroidSDK1.0.zip)が掲載されていたので, ここではダウンロードしない.
AdMaker3
1.2 AdMaker SDKのダウンロード
 1) AdMakerにログインする.
 2) "ダウンロード"メニューの"広告配信SDKのダウンロード"を選択し, 広告配信SDKをダウンロードする.
   7/19時点のダウンロードファイル:AndroidSDK1.1.zip
AdMaker4
 3) AdMaker SDKを解凍する.
   解凍したAdMaker SDK:AndroidSDK1.1
1.3 メディア情報の確認
 1) "配信設定"の"メディアリスト"を選択すると, メディアリストが表示される.
 2) 登録したメディア名(例:AdmakerSample)を選択し, siteID, zoneID, adUrlの情報を確認する.

2. AdMaker広告の表示[2][3]
2.1 プロジェクトの作成
 1) AdmakerSampleのプロジェクトを作成する.
2.2 AdMaker SDKの組み込み
 1) AdmakerSample以下にlibsディレクトリを作成する.
 2) libsディレクトリに, ダウンロードしたAdMaker SDKの中にある, libAdMaker.jarをコピーする.
 3) libAdMaker.jar上で右クリック→Build Path→Add to Build Pathを選択し, ライブラリパスを設定する.
Admaker6
2.3 広告バナー表示プログラム
 1) layout/main.xml
   広告表示用のビューを設定する.
   <?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
     <jp.co.nobot.libAdMaker.libAdMaker
       android:id="@+id/adview_id"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:scrollbars="none"
       />
   </LinearLayout>
 2) AdmakerSample.java
   広告バナーを表示するコードを追加する.
   package com.moonlight_aska.android.admakersample;

   import android.app.Activity;
   import android.os.Bundle;
   import android.util.Log;

   import jp.co.nobot.libAdMaker.*;

   public class AdmakerSample extends Activity {
     private libAdMaker adMaker = null;
 
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
        
       // AdMaker設定
       adMaker = (libAdMaker)findViewById(R.id.adview_id);
       adMaker.siteId = "xxxx";  // SiteID
       adMaker.zoneId = "yyyy";  // ZoneID
       adMaker.setUrl("
http://images.ad-maker.info/apps/zzzzzzzz.html");  // AdURL
       adMaker.start();
       // リスナー登録
       adMaker.setAdMakerListener(new AdMakerListener() {
         @Override
         public void onFailedToReceiveAdMaker(String arg0) {
           // TODO Auto-generated method stub
           Log.v("AdMaker", "失敗");
         }
         @Override
         public void onReceiveAdMaker() {
           // TODO Auto-generated method stub
           Log.v("AdMaker", "成功");
         }
       });
     }
     @Override
     protected void onDestroy() {
       // TODO Auto-generated method stub
       super.onDestroy();
       if(adMaker != null) {
         // 終了処理
         adMaker.destroy();
         adMaker = null;
       }
     }

     @Override
     protected void onPause() {
       // TODO Auto-generated method stub
       super.onPause();
       if(adMaker != null) {
         // 不要な通信を禁止
         adMaker.stop();
       }
     }

     @Override
     protected void onRestart() {
       // TODO Auto-generated method stub
       super.onRestart();
       if(adMaker != null) {
         // 復帰後に広告をリフレッシュ
         adMaker.start();
       }
     }
   }
 3) AndroidManifest.xml
   ネットワークアクセスを許可するために, "INTERNET"と"ACCESS_NETWORK_STATE"のパーミションを設定する.
   <?xml version="1.0" encoding="utf-8"?>
   <manifest xmlns:android="
http://schemas.android.com/apk/res/android"
     package="com.moonlight_aska.android.admakersample"
     android:versionCode="1"
     android:versionName="1.0">
     <uses-sdk android:minSdkVersion="8" />
     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

     <application android:icon="@drawable/icon" android:label="@string/app_name">
       <activity android:name="AdmakerSample"
         android:label="@string/app_name">
         <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
       </activity>

     </application>
   </manifest>
2.4 アプリケーションの実行
SH-03C(SHARP, Android 2.2)で動作確認してみた.
Admaker5
広告はほぼ表示されるが, 同じ広告が頻繁に表示される感じがする.
メディア登録の際に, カテゴリを"ビジネス"に設定したために, 広告の種類が少ないのかナ~.

----
参照URL:
 [1]
スマートフォン広告なら「AdMaker(アドメーカー)」 
 [2]
Google Android WebAPIプログラミング入門(秀和システム)
 [3] AdMaker SDK for Android設定手順書(install_android.pdf in Android SDK1.1)


AdMob広告を表示する

AdMob[1]の配信する広告をアプリケーションに表示させるために, Google AdMob Ads SDK for Androidを試してみた.
2011年4月1日発行の「Google Android Web API プログラミング入門」[2]のChapter 10 広告配信ライブラリを参考にトライしたが, 2011年5月頃にAdMob SDKがGoogle AdMob Ads SDKとなり, 広告の表示方法も少し変わったようなのでまとめておく.

1. 準備[2]
1.1 AdMob ユーザ登録
 
ここからユーザ登録する. ユーザ登録はサイトの右上に登録リンクがあるので, そこから登録を行う.
AdMob01
1.2 アプリケーションの登録とAdMob SDKのダウンロード
 1) AdMobにログインする.
 2) "サイト及びアプリケーション"のメニューから"サイト/アプリケーションの追加"を選択する.
 3) Androidアプリケーションを選択する.
 4) アプリケーション名, パッケージURL, ジャンル, アプリケーションの説明等を入力する.
   まだアプリをAndroid Market等に登録していない場合, パッケージURLは"http://"でもOK.
AdMob03
 5) 登録が完了すると, "AdMob Android SDKのダウンロード"をクリックして, AdMob SDKをダウンロードする.
   7/17時点のダウンロードファイル:googleadmobadssdkandroid.zip
AdMob04
 6) AdMob SDKを解凍する.
   解凍したAdMob SDK:GoogleAdMobAdsSdkAndroid-4.1.0
1.3 パブリッシャーIDの確認
 1) "サイト及びアプリケーション"に移動する.
 2) 登録したアプリにカーソルを移動し, "設定を管理"を選択する.
AdMob02
 3) パブリッシャーIDを控えておく. このIDがアプリの識別IDとなる.
1.4 広告フィルタの設定
表示する広告を制御するために, 各種フィルタを設定する.
 1) 言語設定で, 表示する広告の言語を設定する. 例では, 日本語のみに設定.
AdMob6
 2) カテゴリ及びタイプ設定で, 表示する広告のタイプを設定する.
 3) URLフィルタ, テキストフィルタも必要があれば設定する.

2. AdMob広告の表示[2][3]
2.1 プロジェクトの作成
 1) AdmobSampleのプロジェクトを作成する.
2.2 AdMob SDKの組み込み
 1) AdmobSample以下にlibsディレクトリを作成する.
 2) libsディレクトリに, ダウンロードしたAdMob SDKの中にある, GoogleAdMobAdsSdk-4.1.0.jarをコピーする.
 3) GoogleAdMobAedsSdk-4.1.0.jar上で右クリック→Build Path→Add to Build Pathを選択し, ライブラリパスを設定する.
AdMob5
2.3 広告バナー表示プログラム
 1) layout/main.xml
   レイアウトファイルは, LinearLayoutにidを付与する.
   <?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
     android:id="@+id/ad_id"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
   </LinearLayout>

 2) AdmobSample.java
   広告バナーを表示するコード(赤字)を追加する. 
   MY_AD_UNIT_IDには, 1.3で確認したパブリッシャーIDを設定する.
   package com.moonlight_aska.android.admobsample;
   import android.app.Activity;
   import android.os.Bundle;
   import android.util.Log;
   import android.widget.LinearLayout;

   import com.google.ads.*;
   import com.google.ads.AdRequest.ErrorCode;

   public class AdmobSample extends Activity {
     private static final String MY_AD_UNIT_ID = "xxxxxxxxxxxx";
 
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
        
       // AdMob設定
       AdView adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);
       LinearLayout layout = (LinearLayout)findViewById(R.id.ad_id);
       layout.addView(adView);
       // リスナー登録
       adView.setAdListener(new AdListener() {
         @Override
         public void onDismissScreen(Ad arg0) {
           // TODO Auto-generated method stub
         }
         @Override
         public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
           // TODO Auto-generated method stub
           Log.v("AdMob", "失敗");
         }
         @Override
         public void onLeaveApplication(Ad arg0) {
           // TODO Auto-generated method stub
         }
         @Override
         public void onPresentScreen(Ad arg0) {
           // TODO Auto-generated method stub 
         }
         @Override
         public void onReceiveAd(Ad arg0) {
           // TODO Auto-generated method stub
           Log.v("AdMob", "成功");
         }
       });
       // 広告表示
       AdRequest request = new AdRequest();
       request.setTesting(true);
    // <-- アプリ公開時には削除
       adView.loadAd(request);
     }
   }
 3) AndroidManifest.xml
   ネットワークアクセスを許可するために, "INTERNET"と"ACCESS_NETWORK_STATE"のパーミションを設定する.
   コンフィグレーション(キーボードや画面の向き等)が変更された場合に, Activityが一旦終了して再スタートしないように設定する.
   <?xml version="1.0" encoding="utf-8"?>
   <manifest xmlns:android="
http://schemas.android.com/apk/res/android"
     package="com.moonlight_aska.android.admobsample"
     android:versionCode="1"
     android:versionName="1.0">
     <uses-sdk android:minSdkVersion="8" />
     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
     <application android:icon="@drawable/icon" android:label="@string/app_name">
       <activity android:name=".AdmobSample"
         android:label="@string/app_name">
         <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">
       </activity> 
     </application>
   </manifest> 
 
2.4 アプリケーションの実行
SH-03C(SHARP, Android 2.2)で動作確認してみた.
AdMob7
広告が表示される場合と, 広告のリクエストには成功するが, 広告の表示に失敗する場合があった.

----
参照URL:
 [1] モバイル広告ネットワークプラットフォーム| AdMob

 [2]
Google Android Web API プログラミング入門(秀和システム)
 [3] Google AdMob Ads Android Fundamentals - Google AdMob Ads SDK


Android SDKのエミュレータにアプリをインストールする

Android SDKのエミュレータで日本語入力を行おうと, Simejiのインストールを試みた.
"
Android-x86を日本語化する"と同じようにインストールしようとしたが, エミュレータには"OI File manager"がなかったので, adbを使ってPCからインストールしてみた.
Android SDKのエミュレータにアプリをインストール/アンインストールする方法をまとめておく.

1. インストール[1]
"Simeji4.2.apk"を例に, アプリのインストール手順を示す.
1) Shimeji4.2.apkを
ここからPC(例では, C:\GuestOSAndroidApp)にダウンロードする. 
2) Androidエミュレータを起動する.
3) コマンドプロンプトを起動する.
4) コマンドラインから, adbコマンドを使ってAndroidエミュレータと接続されているか確認する.

 C:\GuestOS\AndroidApp>adb devices
 List of devices attached
 emulator-5554   device
 
5) コマンドラインから, adbコマンドを使ってSimeji4.2をインストールする.
   コマンド : adb install アプリケーション名

 C:\GuestOS\AndroidApp>adb install Simeji4.2.apk
 1522 KB/s (3342611 bytes in 2.144s)
             pkg: /data/local/tmp/Simeji4.2.apk
 Success

6) Androidエミュレータの"設定"→"地域/言語 & 文字入力"→"文字入力設定"メニューに"Simeji"がリストされているので, チェックを入れて有効にする.

simeji


2. アンインストール
1) Androidエミュレータを起動する.
2) コマンドプロンプトを起動する.
3) コマンドラインから, adbコマンドを使ってAndroidエミュレータと接続されているか確認する.
4) コマンドラインから, adbコマンドを使ってアンインストールするアプリのパッケージ名を確認する. (パッケージ名が分かっている場合は不要)

 C:\GuestOS\AndroidApp>adb shell
 # cd /data/data
 cd /data/data/
 # ls
 ls
 com.adamrocker.android.input.simeji
 com.android.providers.downloads
 com.android.providers.drm
 com.android.email
          :
 # exit
 exit

5) コマンドラインから, adbコマンドを使ってSimeji4.2をアンインストールする.
   コマンド : adb uninstall パッケージ名

 C:\GuestOS\AndroidApp>adb uninstall com.adamrocker.android.input.simeji
 Success

今回は, Android SDKのエミュレータにアプリをインストール/アンインストールしたが, Androidの実機でもPCとUSB等で接続すれば, 同様にアプリのインストール/アンインストールができる.

-----
参考URL :
 [1] adb経由でアプリケーションを手動でインストール/アンインストールするには - 逆引きAndroid入門 -

livedoor プロフィール
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

記事検索



  • ライブドアブログ