Android JNI

2023-11-01

选择你的到处路径和名称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")自行修改。。。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android JNI 的相关文章

  • Unity3D研究院之游戏开发中的人工智能AI

    人工智能这个东西在游戏中是非常重要的 人工智能说简单了就是根据随机的数字让敌人执行一些动作或逻辑 说难了TA需要一个非常复杂的算法 本文我主要说说Unity3D中人工智能的脚本如何来编写 首先你应该搞清楚的一点AI脚本属于一个工具类脚本 工
  • 关于Albedo贴图、颜色贴图、Metallic 贴图、Specular贴图、法线贴图、视差贴图、凹凸贴图、Height Map高度贴图、AO 贴图Occlusion 贴图、Emission 贴图等

    在学习unity的过程中 被各种贴图弄得晕头转向 为了弄清楚各种贴图 查询了很多资料 粗略的整理如下 只要耐心看完 对贴图的基本用法基本上就没问题了 1 Albedo 贴图 可以看做是Diffuse颜色贴图 Albedo 反照率 贴图 用于
  • Unity的C#编程教程_59_字典 Dictionary 详解及应用练习

    文章目录 C Dictionary Introduction C Dictionary Looping through Dictionary C Dictionary When to Use C Dictionary Using Dicti
  • Unity的C#编程教程_52_类 Class 详解及应用练习(一)

    文章目录 C Classes for Behaviours Custom Classes 1 Custom Classes 2 Serialized Custom Class RPG Item Database Example 3 When
  • Unity InputSystem 实现同一按键单击、双击、长按执行不同逻辑

    最近学习了一下Unity InputSystem 该系统可用于实现 管理复杂的操作逻辑 上限很高 但由于它有一定的学习成本 导致一些和我一样的小白一入门时不得要领 之前卡住我的一个需求就是通过InputSystem 实现同一按键单击 双击
  • Unity3d 简单的按照路径移动物体!

    在TORQUE引擎中 我们只要设置几个点 然后物体会按照这几个点顺序移动 Unity3d也可以的 现在介绍一个很简单的按照路径移动的方法 目标是让蓝色方块沿着紫色方块组成的路径移动 设计思想就是让蓝色方块移动第一个 然后继续移动到第二个 然
  • Unity3D射线检测

    射线检测主要用于像子弹是否打中物体 捡取物品等情况 本来面向百度想找例子看看 不过没找到合适的 还是自己总结尝试吧 以下测试Unity3D版本 2017 4 2f2 射线的检测步骤如下 1 Ray 这个类为了产生一个射线 如果我们想要场景中
  • Unity笔记-打飞碟游戏

    目的 创建一个打飞碟游戏 简陋 游戏要求 游戏要分多个 round 飞碟数量每个 round 都是 n 个 但色彩 大小 发射位置 速度 角度 每次发射数量可以变化 游戏过程中 仅能创建 n 个飞碟 且不容许初始化阶段生成任何飞碟 飞碟线路
  • Vuforia Virtual Button(虚拟按钮)使用技巧

    最近一直在摸索Vuforia的使用 Virtual Button算是一个比较容易吸引人眼球的功能 在经过一些测试后 我来总结下自己在探索过程中得到的一些经验 1 如何新建一个Virtual Button工程 导入Vuforia sdk 后把
  • HLSL 偏导数 ddx / ddy

    HLSL ddx ddy 在光栅化的时刻 GPUs会在同一时刻并行运行很多Fragment Shader 但是并不是一个pixel一个pixel去执行的 而是将其组织在2x2的一组pixels分块中 去并行执行 偏导数就正好是计算的这一块像
  • Unity笔记:修改代码执行的默认打开方式

    使用 External Tools 偏好设置可设置用于编写脚本 处理图像和进行源代码控制的外部应用程序 External Script Editor 选择 Unity 应使用哪个应用程序来打开脚本文件 Unity 会自动将正确的参数传递给内
  • Unity编辑器扩展——进度条显示通用方法

    在我们使用Unity编辑器扩展做一些批处理的工具时 通常会需要显示一个进度条 这样不会让Unity一直卡住不动 使得使用者不知道当前的进展 那么如何显示进度条呢 涉及的相关API有 EditorUtility ClearProgressBa
  • 闲云:unity中不能识别monobehevior关键字的问题

    有时候一些小问题很恼人 如unity中新建脚本后不能识别monobehevior关键字 在vs2017右侧的解决方案中点击刷新图标 或者把不能识别的脚本添加到vs2017右侧的解决方案中的Assets中即可 还不行就点击 排除 然后再 添加
  • unity本地分数排行榜简单解决方案(Json)

    具体效果 大体方法 创建一个分数类Score和一个分数类的容器List
  • Unity_如何使相机视角一直跟随角色移动

    实例代码如下 using System Collections using System Collections Generic using UnityEngine 相机视角跟踪 public class FollowTarget Mono
  • 【Unity灯光与渲染技术】Global Illumination全局光照

    本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering 同时会加上一点个人实践过程和理解 分割线 这篇文章主要讲全局光照 在看教程的时候就有一个点不是很理解 就是作者开启物体的static这个选项
  • 对Unity3D 静态批处理和动态批处理的理解

    Draw Call就是CPU调用图像编程接口 像OpenGL或者 DirectX 简单来说 Draw Call就是由CPU发起的一个命令 添加到一个命令缓冲区 当GPU完成了上一次的渲染任务之后 会从命令缓冲区的命令队列中再取出一个并执行
  • unity的LOD组件

    本文转载自http blog csdn net huutu article details 52106468 LOD是Level Of Detais 的简称 多细节层次 在游戏场景中 根据摄像机与模型的距离 来决定显示哪一个模型 一般距离近
  • Unity3d获得android和ios设备的唯一标识

    android为mac地址 ios为advertisingIdentifier 函数都比较简单 网上也搜得到 我也就不多说了 主要是对于我们没做过安卓和IOS开发的人来说 整合进工程有各种的问题 我也就直接上网盘了点击打开链接 代码包里看得
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w

随机推荐

  • M.2/sata2.0/3.0接口,PCI-E1.0/2.0/3.0/4.0x2x4x8x16速率汇总

    B站 硬件科普 PCIe到底是个什么东西 他在电脑里是干什么的 PCIE2 0 PCIE3 0 PCIE4 0 PCIE5 0接口的带宽 速率计算 sata2和sata3接口区别 https diy pconline com cn grap
  • 比较器

    比较器 比较器 顾名思义 做比较的 比较两个电压 然后输出高低电平 01 不带反相的比较器 当Vin gt Vref 输出高电平 当Vin
  • float浮动布局大战position定位布局

    华子目录 布局方式 普通文档流布局 浮动布局 浮动主要针对与black inline元素 float属性 浮动用途 浮动元素父级高度塌陷 position属性定位篇 相对定位 relative为属性值 配合left属性 和top属性使用 绝
  • SparkStreaming写入hbase数据库过程中,有空指针NullPointException产生如何处理以及RDD类型如何转换!!

    所用的软件版本 spark2 3 0 hbase1 4 6 IDEA2019 1 业务代码如下 package com bd spark import org apache kafka clients consumer ConsumerRe
  • 自定义CMD命令

    1 首先我们要创建一个自定义命令名 bat文件 例如 music bat 2 写入需要执行的命令 保存退出 例如 软件所在的绝对路径 3 键入win R 输入sysdm cpl 4 打开高级 gt 环境变量 gt 系统变量 gt Path
  • python的inspect模块

    http www cnblogs com walkerwang archive 2011 08 03 2125903 html 简介 发现python有个好用的检查模块 inspect 查看源文件发现它提供了不少好用的方法 Here are
  • Proteus中的继电器在哪里

    今天做仿真时候 用到了继电器 但是电路搭建好后发现怎么继电器上电不动作 发现是继电器选错了 然后找了一个最常用的继电器来用一试成功 所以就分享一下Proteus中的继电器在哪里 如图所示 我们先点一下第一步的元器件标志 然后在点一下旁边的标
  • 第三方软件测试环境搭建步骤流程

    在软件测试流程及各项环节中 不可避免的要进行测试环境的搭建 测试环境与开发环境不一样 比如说你要对APP进行功能测试或者性能测试 那就要模拟用户在使用APP时候的真实场景 客户会进行什么样的操作 所以测试环境需要尽可能的贴近真实环境进行 那
  • 智能优化与机器学习结合算法实现数据预测matlab代码清单

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 信号处理 图像
  • pandas中drop()函数用法

    函数定义 DataFrame drop labels None axis 0 index None columns None inplace False 删除单个行 import pandas as pd import numpy as n
  • 硬件第一节 三级管电路工作原理及详解

    文章目录 一 三极管辨认 1 1 辨认bce边 1 2 三极管工作状态 1 2 1放大状态 1 2 2 截止状态 1 2 3 饱和状态 二 三极管使用 2 1 三极管作为开关管 三 三极管选型 3 1 参数 3 2 常用三极管参数整理 一
  • rm刷新了我的认知

    大家好 我是良许 创建 删除和修改文件是用户在 Linux 系统中执行的非常常见操作 大家都知道 在 Linux 系统里使用 rm 命令删除单个文件时 几乎一瞬间就完成了 但是如果文件数量很大 那么删除操作就需要很长时间才能完成 你有没想过
  • mdl格式是什么软件生成的_【原创】slx文件与mdl文件的差别

    slx文件是二进制格式文件 mdl文件是文本格式文件 早期Simulink的模型文件为mdl格式 slx格式在Matlab Simulink R2012a版本中引入 旨在取代以前的mdl格式 由于slx被压缩 通常文件大小会比相同的mdl文
  • 2023跨年烟花(浪漫烟花+自定义音乐+雪花飘飘+自定义文字)

    效果 介绍 可以自定义跨年文字 可自定义更换背景音乐 具有雪花效果 项目文件index html gameCanvas 4 0 js script js index html文件
  • SQL select into from 和 insert into from 语句

    在刷笔试题的时候看到一个表的复制的问题 以前没见过 写一下 用于创建表的备份复件 复制表 两条SQL语句 1 insert into tableName2 column name1 column name2 select column na
  • >> << & 操作符总结

    lt lt 符号 扩大多少倍 Integer num 16 num num lt lt 2 System out println num gt gt gt gt gt num gt gt 符号 缩小多少倍 Integer num 16 nu
  • 沈师 PTA 数据库题目及部分解析 第五章

    判断题 1 当主外健不能保证参照完整性和数据一致性时 还可以选择触发器来实现 T 2 域完整性是保证数据完整性的重要约束之一 T 3 当用户违反了参照完整性时 DBMS会采取一些策略加以处理 包括拒绝 级联操作和设置为空值 T 4 参照完整
  • m1 mac安装docker、k8s(成功案例)

    m1 mac安装docker k8s 成功案例 一 安装docker 二 安装kubernetes ps 系统 macos 12 monterey 一 安装docker 1 先要清理旧数据 讲道理这一步重不重要我还真没试过 毕竟在docke
  • 问题 C: 销售排行榜

    题目描述 你的任务是帮助淘宝网店店长整理销售数据 根据累计的销售记录 将所有商品按销售数量降序排列 输入 输入包括多行数据 行数小于100000 每行数据包括4个信息 分别是商品名称 销售数量 单价 成交日期 商品名称由小写字母组成 且不超
  • Android JNI

    选择你的到处路径和名称JAR file 直接Finish 这样的jar包里面只包括编译后的AdMob class 很小很干净 然后打开羽化的Unity工程AdMobTest File gt Open Project 双击UnityAdMob