Android JNI

选择你的到处路径和名称JAR file,直接Finish,这样的jar包里面只包括编译后的AdMob.class,很小很干净。。。然后打开羽化的Unity工程AdMobTest(File- > Open Project),双击UnityAdMob这个Sence,可以看到只有一个相机。。。上面只有一个脚本Ad.cs。

Ad.cs

[csharp] view plaincopyprint?
  1. using UnityEngine;  
  2.   
  3. using System.Collections;  
  4.   
  5. using System;  
  6.   
  7.   
  8.   
  9. public class Ad : MonoBehaviour   
  10.   
  11. {  
  12.   
  13.     void OnGUI()   
  14.   
  15.     {  
  16.   
  17.         if(Input.GetKey(KeyCode.Escape))  
  18.   
  19.         {  
  20.   
  21.             Application.Quit();  
  22.   
  23.         }  
  24.   
  25.           
  26.   
  27.         if(GUI.Button(new Rect(0,Screen.height-220,100,100),"EnableAds!"))  
  28.   
  29.         {  
  30.   
  31.             EnableAds();  
  32.   
  33.         }  
  34.   
  35.           
  36.   
  37.         if(GUI.Button(new Rect(0,Screen.height-110,100,100),"DisableAds!"))  
  38.   
  39.         {  
  40.   
  41.             DisableAds();  
  42.   
  43.         }  
  44.   
  45.           
  46.   
  47.         if(GUI.Button(new Rect(Screen.width-120,Screen.height-40,120,30),"Click to YUHUA!"))         
  48.   
  49.         {        
  50.   
  51.             Application.OpenURL("http://blog.csdn.net/libeifs");        
  52.   
  53.         }  
  54.   
  55.     }  
  56.   
  57.       
  58.   
  59.       
  60.   
  61.     public void EnableAds()  
  62.   
  63.     {  
  64.  
  65. #if UNITY_ANDROID  
  66.   
  67.         AndroidJNI.AttachCurrentThread();  
  68.   
  69.   
  70.   
  71.         // first we try to find our main activity..  
  72.   
  73.         IntPtr cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");  
  74.   
  75.         IntPtr fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity""Landroid/app/Activity;");  
  76.   
  77.         IntPtr obj_Activity = AndroidJNI.GetStaticObjectField(cls_Activity, fid_Activity);  
  78.   
  79.         //Debug.Log("obj_Activity = " + obj_Activity);  
  80.   
  81.   
  82.   
  83.         IntPtr cls_OurAppNameActivityClass = AndroidJNI.FindClass("com/LB/AdMob/AdMob"); //this has to be changed  
  84.   
  85.   
  86.   
  87.         IntPtr startAdsMethod = AndroidJNI.GetMethodID(cls_OurAppNameActivityClass, "EnableAds""()V");  
  88.   
  89.         //Debug.Log("m_startAdsMethod = " + startAdsMethod);  
  90.   
  91.   
  92.   
  93.         if (AndroidJNI.IsInstanceOf(obj_Activity, cls_OurAppNameActivityClass) != false)  
  94.   
  95.         {  
  96.   
  97.             //Debug.Log("Activity IS a OurAppNameActivity");  
  98.   
  99.             jvalue[] myArray = new jvalue[1];  
  100.   
  101.             AndroidJNI.CallVoidMethod(obj_Activity, startAdsMethod,myArray);  
  102.   
  103.         }  
  104.  
  105. #else  
  106.   
  107.         m_adShowing = true;  
  108.  
  109. #endif //UNITY_ANDROID  
  110.   
  111.     }  
  112.   
  113.   
  114.   
  115.       
  116.   
  117.     public void DisableAds()  
  118.   
  119.     {  
  120.  
  121. #if UNITY_ANDROID  
  122.   
  123.         AndroidJNI.AttachCurrentThread();  
  124.   
  125.   
  126.   
  127.         // first we try to find our main activity..  
  128.   
  129.         IntPtr cls_Activity = AndroidJNI.FindClass("com/unity3d/player/UnityPlayer");  
  130.   
  131.         IntPtr fid_Activity = AndroidJNI.GetStaticFieldID(cls_Activity, "currentActivity""Landroid/app/Activity;");  
  132.   
  133.         IntPtr obj_Activity = AndroidJNI.GetStaticObjectField(cls_Activity, fid_Activity);  
  134.   
  135.   
  136.   
  137.         IntPtr cls_OurAppNameActivityClass = AndroidJNI.FindClass("com/LB/AdMob/AdMob"); //this has to be changed  
  138.   
  139.         IntPtr stopAdsMethod = AndroidJNI.GetMethodID(cls_OurAppNameActivityClass, "DisableAds""()V");  
  140.   
  141.   
  142.   
  143.         if (AndroidJNI.IsInstanceOf(obj_Activity, cls_OurAppNameActivityClass) != false)  
  144.   
  145.         {  
  146.   
  147.             jvalue[] myArray = new jvalue[1];  
  148.   
  149.             AndroidJNI.CallVoidMethod(obj_Activity, stopAdsMethod,myArray);  
  150.   
  151.         }  
  152.  
  153. #else //UNITY_ANDROID  
  154.   
  155.         m_adShowing = false;  
  156.  
  157. #endif //UNITY_ANDROID  
  158.   
  159.     }  
  160.   
  161. }  


       看起很简单,确实也不难,首先建立Plugins -> Android -> bin | libs这个文件集,把Eclipse项目里面的AndroidManifest.xml放在Android目录下,把打包的UnityAdMob.jar放在bin下,把这个重写的AdMob SDK放在libs下,注意:把Bundle Identifier设置成和Eclipse项目包一样的名字,就算没有Ad.cs程序运行也会执行一次广告,这个C#类只是个广告开关,还有里面的两个AndroidJNI.FindClass("XXX")自行修改。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值