2014년 4월 24일 목요일

Ad@m_UnityPlayerNativeActivity.java

package com.my.app;

import net.daum.adam.publisher.AdInterstitial;
import net.daum.adam.publisher.AdView;
import net.daum.adam.publisher.impl.AdError;
import android.app.NativeActivity;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RelativeLayout;

import com.unity3d.player.UnityPlayer;

public class UnityPlayerNativeActivity extends NativeActivity
{
 protected UnityPlayer mUnityPlayer;  // don't change the name of this variable; referenced from native code
 
 // Adam Plugin field
 final String mBannerID = "TestClientId"; // Banner Client ID
 final String mInterstitialID = "InterstitialTestClientId"; // Intersitial Client ID
 private static final String LOGTAG = "Adam";
 private RelativeLayout relativeLayout = null;
 private AdView adView = null;
 AdInterstitial mAdInterstitial = null;
 
 // UnityPlayer.init() should be called before attaching the view to a layout - it will load the native code.
 // UnityPlayer.quit() should be the last thing called - it will unload the native code.
 protected void onCreate (Bundle savedInstanceState)
 {
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  super.onCreate(savedInstanceState);
  
  getWindow().takeSurface(null);
  setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
  getWindow().setFormat(PixelFormat.RGB_565);

  mUnityPlayer = new UnityPlayer(this);
  if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
   getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
                          WindowManager.LayoutParams.FLAG_FULLSCREEN);

  int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
  boolean trueColor8888 = false;
  mUnityPlayer.init(glesMode, trueColor8888);

  View playerView = mUnityPlayer.getView();
  
  //Adam
  relativeLayout = new RelativeLayout(this);

     initAdam();
     initInterstitial();

     relativeLayout.addView(adView);

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
     params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
     
     addContentView(playerView, params);
     addContentView(relativeLayout, params);

     adView.setLayoutParams(params);
     
  setContentView(playerView);
  addContentView(relativeLayout, params);
  
  playerView.requestFocus();
 }
 
 public void LoadInterstitial()
   {
     mAdInterstitial.loadAd();
   }

   public void initInterstitial()
   {
     mAdInterstitial = new AdInterstitial(this);

     mAdInterstitial.setClientId("8ec8Z0kT14572d5fa2c");

     mAdInterstitial.setOnAdLoadedListener(new AdView.OnAdLoadedListener() {
       public void OnAdLoaded() {
         Log.i("MSGAdam", "광고가 로딩되었습니다.");
       }
     });
     mAdInterstitial.setOnAdFailedListener(new AdView.OnAdFailedListener()
     {
       public void OnAdFailed(AdError error, String errorMessage) {
         Log.i("MSGAdam", errorMessage);
       }
     });
   }

   public void initAdam()
   {
     adView = new AdView(this);

     adView.setOnAdClickedListener(new AdView.OnAdClickedListener() {
       public void OnAdClicked() {
         Log.i(LOGTAG, "광고를 클릭했습니다.");
       }
     });
     adView.setOnAdFailedListener(new AdView.OnAdFailedListener() {
       public void OnAdFailed(AdError arg0, String arg1) {
         Log.w(LOGTAG, arg1);
       }
     });
     adView.setOnAdLoadedListener(new AdView.OnAdLoadedListener() {
       public void OnAdLoaded() {
         Log.i(LOGTAG, "광고가 정상적으로 로딩되었습니다.");
       }
     });
     adView.setOnAdWillLoadListener(new AdView.OnAdWillLoadListener() {
       public void OnAdWillLoad(String arg1) {
         Log.i(LOGTAG, "광고를 불러옵니다. : " + arg1);
       }
     });
     adView.setOnAdClosedListener(new AdView.OnAdClosedListener() {
       public void OnAdClosed() {
         Log.i(LOGTAG, "광고를 닫았습니다.");
       }
     });
     adView.setClientId(mBannerID);

     adView.setRequestInterval(30); // default 60 , 배너 갱신 간격

     adView.setAnimationType(AdView.AnimationType.NONE); 
     adView.setVisibility(0);
   }
 
 protected void onDestroy ()
 {
  mUnityPlayer.quit();
  super.onDestroy();
 }

 // onPause()/onResume() must be sent to UnityPlayer to enable pause and resource recreation on resume.
 protected void onPause()
 {
  super.onPause();
  mUnityPlayer.pause();
 }
 protected void onResume()
 {
  super.onResume();
  mUnityPlayer.resume();
 }
 public void onConfigurationChanged(Configuration newConfig)
 {
  super.onConfigurationChanged(newConfig);
  mUnityPlayer.configurationChanged(newConfig);
 }
 public void onWindowFocusChanged(boolean hasFocus)
 {
  super.onWindowFocusChanged(hasFocus);
  mUnityPlayer.windowFocusChanged(hasFocus);
 }
 public boolean dispatchKeyEvent(KeyEvent event)
 {
  if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
   return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);
  return super.dispatchKeyEvent(event);
 }
}

Categories:

0 개의 댓글:

댓글 쓰기