万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Admob特化版 Android

http://garlicg.blog92.fc2.com/blog-entry-31.html
このソースは複数なのでAdmobだけに限定する。
このサイトはせっかく綺麗にまとまってるが、インポート文がなぜかないので修正した。

AndroidのOSバージョン
2.3.1が無難

package com.shinriyo.zombeat;

import com.google.ads.*;
import android.app.Activity;
import android.view.LayoutInflater;
import com.google.ads.AdRequest.ErrorCode;
import android.widget.LinearLayout;

/**
 * 広告クラス
 */
public class Ads {
	
	private Activity mActivity;
	
	public Ads(Activity act) {
		mActivity = act;
	}
	
	/**
	 * Admobを設定します。
	 */
	public void setAdmob(){
		// xmlからAdmobViewを生成する
		LayoutInflater inflater = mActivity.getLayoutInflater();
		AdView av = (AdView)inflater.inflate(R.layout.ads_admob, null);
		
		// AdmobはAdListenerをセットできる
		av.setAdListener(new AdListener() {
			@Override
			public void onReceiveAd(Ad arg0) {
			}
			@Override
			public void onPresentScreen(Ad arg0) {
			}
			@Override
			public void onLeaveApplication(Ad arg0) {
			}
			@Override
			//public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error) {
			public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
				// 受信に失敗した場合はローカル広告を表示する
				//setMyAds();
			}
			@Override
			public void onDismissScreen(Ad arg0) {
			}
		});

		// 広告レイアウトにAdmobをセットする
		((LinearLayout)mActivity.findViewById(R.id.ads_parent)).addView(av);
		av.loadAd(new AdRequest());
	}
}

package com.shinriyo.zombeat;は独自に直してね。メインのアクティビティと同じパッケージにすると都合がいい。
Rクラスがインポートなしでやってくれるし。

package com.shinriyo.zombeat;

import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.unity3d.player.UnityPlayerActivity;

public class HogeActivity extends UnityPlayerActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //広告用のView追加
        View view = this.getLayoutInflater().inflate(R.layout.lay_adtest, null);
        addContentView(view,new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
        // 直接指定
        new Ads(this).setAdmob();
    }
}

なぜか「lay_adtest」とすべき所が「lay_ads」になってた。
XMLを修正してもいいかも?

今度まとめよう。

プレハブを使う Unity

  • こんなやり方もあったのか
Instantiate(Resources.Load("プレハブ名")); 

C#が賢い件 Unity

if (a = b) {
    // Do something
}