2011-02 << 2011-03 >> 2011-04

2011-03-18 (金)

秋葉原へ行って,リナカフェで開発したりする日.Trapezoidに1000円借りた.忘れないようにしよう.

*牛丼と金と秋葉原

秋葉原に行こうとして,財布に200円しか入っていないことに気付きました.大抵何か買おうとしたときにお金無いことに気づくので,今日の自分は冴えてます.

財布を確認してよかった.ってことで出かけようと思ったのですが,なんかTLに銀行の話が多い気がしたので嫌な予感がした.聞いたら,みずほのATM使えないらしい.他の銀行はネットバンキングしかしないので,キャッシュカードそもそも無いとか,数年間見かけてないとかそういう状態.

コンビニのATMもやっぱりだめで,郵貯の方は残高が数百円しかなかった.

お金無くても何とかなるだろうと秋葉原へ.shimobayashiとTrapezoidと合流.久しぶりにサンボ行きました.

まぁ,金の有無が命に関わることはほとんど無いし,本来あるべきでは無いと考えて普段いくら持ってるとか気にして無いのだけど,もう少し気にするべきな気はする.きっと電子マネーによって解決されるだろうと期待.

もっと根本的な問題として,自分の生命にどれだけ影響いているかで問題の重要度を判断しているのがダメなのかも.

*[Android] AdMob SDKが新しくなったので使ってみた

昨日,AdMobの広告を拙作のニコニコPlayer(仮)に入れてみましたが,どうやらSDKが新しくなっているようです.

少し前にダウンロードしたSDKで実装していたのですが,新しいSDKも使ってみました.前より楽になってますが,説明が少ないので色々と嵌りそうです.

パッケージ名が,com.admob.android.ads から com.google.ads になって,インターフェイスもかなり変わってます.なんとなくですが,全部作り直したんじゃないかと思います.

嵌るといえば,最新のSDKどうやってダウンロードするのかよく忘れてしまいます.各アプリケーションの「設定の管理」に行って「パブリッシャー コードを取得」を選べば,SDKをダウンロードできます.前はPDF等もおいてましたが,今はSDKのzipがあるだけのようです.

変わったところ

全体的にシンプルな作りになってjarのサイズも小さくなりました.

  • com.admob.android.ads が com.google.ads に
  • AdManagerが無い
  • 明示的に loadAdsなどを呼ぶ必要がある
  • android.permission.ACCESS_NETWORK_STATEが必須に(?)
  • Publisher ID などは AdViewのコンストラクタに渡すように(?)
  • XML類の記述は少なくなった

AdManagerが無いので,テストデバイスどうやって登録するのか不明です.AdRequest.setTesting()で設定できそうですが,エミュレータでないと有効にならない模様です.

jarの中を見たところ,com.google.ads.InstallReceiverもありますが,説明が出てくるまでは触らないで置く.

AdViewのインスタンスに色々わたさないといけないのが少し不便.もしかしたら,xmlから指定できるのかもしれませんが,説明が一切無いので不明.

導入メモ

AdMobのアカウントを登録済みであることが前提です.まだの人は下のURLからアカウントを作成し,アプリケーションも登録しましょう.支払い情報などは後回しでも良いです.

http://jp.admob.com/

ダウンロードしたzipの中のドキュメントが全く役に立たなそうで焦りますが,基本的には,Google Code上の説明を読めば分かるようです(英語ですが).

http://code.google.com/mobile/ads/docs/android/

まず,GoogleAdMobAdsSDK-4.0.2.jar をプロジェクトに追加し,ビルドパスに加えておきます.Eclipseならファイルをドラッグ&ドロップで追加してビルドパスの設定をするだけです.

permissionはINTERNETとACCESS_NETWORK_STATEが必要らしいので,AndroidManifest.xmlのmanifest直下に追加します.

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

あと広告用のActivityもManifestのapplication内に追加します.


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

説明では,Activityの中でAdViewのインスタンスを生成していますが,広告用のコードは混ぜたいとは思わないので,AdViewを継承したViewを作って中で全部やることにします.

package net.binzume.android.adtest;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;

public class MyAdView extends AdView {
    static final String MY_AD_UNIT_ID = "***PUBLISHER ID***";

    public MyAdView(Context context, AttributeSet attrs) {
        super((Activity) context, AdSize.BANNER, MY_AD_UNIT_ID);
    }

    protected void onFinishInflate() {
        AdRequest request = new AdRequest();
        request.setTesting(true);
        super.loadAd(request);
    }

}

地域の指定や,ユーザーの属性などの指定をするなら,それもここで.もしかしたら,全部コンストラクタで良いかもしれない.

あとは,layoutのXMLに適当に

<net.binzume.android.adtest.MyAdView
	android:id="@+id/ad"
	android:layout_weight="0"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	/>

みたいなのを書いてビューを追加.もちろんパッケージ名は自分のアプリケーションにあわせて変えてください.

これで,エミュレータで実行するとテスト用の広告が出るようになります.

課題

実機でテスト広告を出す方法は分からないのが今後の課題.テストモード以外だと,たまにしか広告が表示されないので確認が面倒です.

まだSDKが新しくなったばかりで,情報が少ない上に,今後色々変わりそうな予感.