在 Android 專案中加入 admob 的方法可以參考這篇,裡面的步驟1~4是一模一樣的,以我的版權聲名流程為例,程式碼修改為

  package com.example.helloworld;
   
  import android.animation.AnimatorSet;
  import android.animation.ObjectAnimator;
  import android.animation.ValueAnimator;
  import android.annotation.SuppressLint;
  import android.app.Activity;
  import android.app.AlertDialog;
  import android.content.Context;
  import android.content.DialogInterface;
  import android.content.Intent;
  import android.content.pm.ActivityInfo;
  import android.graphics.Typeface;
  import android.net.ConnectivityManager;
  import android.net.NetworkInfo;
  import android.net.Uri;
  import android.os.Bundle;
  import android.view.Gravity;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.view.Window;
  import android.view.WindowManager;
  import android.widget.Button;
  import android.widget.LinearLayout;
  import android.widget.TextView;
   
  import com.google.ads.AdRequest;
  import com.google.ads.AdSize;
  import com.google.ads.AdView;
   
   
  @SuppressLint("NewApi")
  public class CopyRightFlow extends Activity{
   
      static final String tLog = "Trace Log";
   
      TextView tv; // init by xml use
   
      Button bYes; // enter button
      Button bNo; // exit button
      AdView adView;
      @Override
      public void onCreate(Bundle savedInstanceState) {
   
          super.onCreate(savedInstanceState);
  //        setWindowFeature();
          initByXml();
   
      }
      void setWindowFeature(){
          //fullscreen
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
          //no title
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          //portrait
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
      }
      void initByXml() {
          setContentView(R.layout.copyright);
          addAdmob();
          // TextView init
          tv = (TextView) findViewById(R.id.textView1);// why can't cast to
                                                          // TestTextView
          tv.setTextColor(0xff888888); // set color
          tv.setTextSize(18.0f); // set size
          tv.setTypeface(Typeface.SERIF);// set typeface
          tv.setText(R.string.copy_right);// change text
          tv.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
   
          // ButtonYes init
          bYes = (Button) findViewById(R.id.buttonYes); // get ButtonYes
          OnClickListener bYesOc = new OnClickListener() { // build ButtonYes Listener
   
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
   
  //                CopyRightFlow.this.finish(); // exit program
  //
  //                Intent goAct = new Intent();// new a Intent
  //                goAct.setClass(CopyRightFlow.this, GetDisplaySize.class); // setclass
  //                startActivity(goAct); // start another Activity
  //
  //                System.exit(0);
                  ValueAnimator rotationY = ObjectAnimator.ofFloat(bYes, "rotationY", 0f, 360f);
                  ValueAnimator rotationX = ObjectAnimator.ofFloat(bYes, "rotationX", 0f, 360f);
                  rotationY.setDuration(1000);
                  rotationX.setDuration(500);
                  AnimatorSet as = new AnimatorSet();
                  as.playTogether(rotationY,rotationX);
                  as.start();
              }
          };
          bYes.setOnClickListener(bYesOc);// set ButtonYes Listener
   
          // ButtonNo init
          bNo = (Button) findViewById(R.id.buttonNo); // get ButtonNo
          bNo.setOnClickListener(new OnClickListener() { // build ButtonNo Listener
   
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  showAlertDialog();
              }
          });
      }
   
      void showAlertDialog(){
   
          AlertDialog ad = new AlertDialog.Builder(this).create();
          ad.setTitle("警告");//設定警告標題
          ad.setMessage("確定離開??");//設定警告內容
          ad.setButton("確定", new DialogInterface.OnClickListener() {//設定按鈕1
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  //點選按鈕1後執行的動作
                  //檢查網路狀態
                  ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
   
                  NetworkInfo ni = cm.getActiveNetworkInfo();
                  if (ni == null) {//沒有網路
   
  //                    CopyRightFlow.this.finish();//結束程式
                      System.exit(0);
                  }
                  else if (ni != null) {//若有網路先連結到外部網頁
   
                      if( ni.isConnected()){
                      Uri uri = Uri.parse("http://vulpesadn.blogspot.tw/");
                      Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                      startActivity(intent);
   
  //                    CopyRightFlow.this.finish();//再結束程序
                      System.exit(0);
                      }
                  }
              }
          });
          ad.setButton2("取消", new DialogInterface.OnClickListener() {//設定按鈕2
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  //點選按鈕2後執行的動作
                  //無動作
              }
          });
          ad.setCanceledOnTouchOutside(false);//當警告提示出現後,點選提示以外範圍,是否會取消提示,預設是true
          ad.setCancelable(false);//當警告提示出現後,點選其他實體按鈕(backkey等等),是否會取消提示,預設是true
          ad.show();//顯示按鈕
      }
      void addAdmob() {
   
           adView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxxxx");//xxxxxxxxxxxxxxx is your admob id
           LinearLayout layout = (LinearLayout) findViewById(R.id.AdLayout);
           layout.addView(adView);
           adView.loadAd(new AdRequest());
   
      }
  }

第 42 行產生 AdView 的 reference, adview
第 67 行為建立 admob 廣告的方法,其內容定義在 174 ~ 181 行
第 176行產生 adview 物件,其中 xxxxxxxxxx 為你的發布商id
第 177 行使用 LinearLayout 佈局,這個佈局專門給 adview 使用
第 178 行加入 adview
第 179 行要求 顯示廣告
程式碼的部分是如此,接著請注意 addAdmob 方法是在 setContentView 後呼叫代表在 R.layout.copyright 必須加入給 adview 使用的 佈局,所以 R.layout.copyright 修改如下

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent" >
   
      <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerHorizontal="true"
          android:layout_centerVertical="true"
          android:text="@string/hello_world" />
   
      <Button
          android:id="@+id/buttonYes"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_alignParentLeft="true"
          android:text="繼續" />
   
      <Button
          android:id="@+id/buttonNo"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_alignParentRight="true"
          android:text="離開" />
   
      <LinearLayout
      android:id="@+id/AdLayout"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      ></LinearLayout>
  </RelativeLayout>

 

第 30 ~ 34 行就是新加入的佈局專門給 adview 使用,如果就這樣執行的話,廣告會顯示,不過你會看到1個奇怪的內容如下

 
 
 
 
 
 
 
 
 
 
提示你必須在 AndroidManifest.xml 中建立 adactivity 以及使用 configChanges ,所以我們就跟著提是修改 AndroidManifest.xml 吧
在 <application>標籤中加入

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

第 1 行建立 AdActivity
第 2 行使用指定的 configchanges
最後還要記得開網路,不然廣告也無法顯示
結果為