Unity调用Android
1.Unity调用Android
根据unity用户手册,unity可以采用native code(c/c++),但是也提供了C#调用方法,本文对此进行简单讲解。
2.Unity获取android类
通过下述方法即可获取包com.ii.intentreceiver(可类比于C#命名空间)下的类MainActivity。继而可以调用MainActivity的静态方法getIntentResult。其返回值为string,如果无返回值,则直接调用CallStatic即可。
using (AndroidJavaClass mainActivityClass = new AndroidJavaClass("com.ii.intentreceiver.MainActivity"))
{
Debug.Log("IntentReceiver start catch infomation");
try
{
result = mainActivityClass.CallStatic<string>("getIntentResult");
}
catch(Exception ex)
{
Debug.Log("IntentReceiver get result failed:" + ex.Message);
}
}
3.Unity获取android类的实例
通过下述方法即可获取包com.ii.intentreceiver(可类比于C#命名空间)下的类MainActivity的一个实例。继而可以调用MainActivity的方法getResult。其返回值为Android定义的一个实例,所以返回值为AndroidJavaObject类型,如果无返回值,则直接调用Call即可。
try
{
using (AndroidJavaObject main = new AndroidJavaObject("com.ii.intentreceiver.MainActivity",null))
{
intentJavaObject = main.Get<AndroidJavaObject>("getResult");
}
}
catch(AndroidJavaException ex)
{
Debug.Log("Exception while connecting to the Activity:" + ex.ToString());
return null;
}
3.获取Unity的Activity
即可获取unity的currentActivity
private static string unityPlayerClass = "com.unity3d.player.UnityPlayer";
public static AndroidJavaObject GetActivity()
{
AndroidJavaClass jc = new AndroidJavaClass(unityPlayerClass);
if (jc == null)
{
Debug.LogErrorFormat("Failed to get Unity Player class, {0}", unityPlayerClass);
return null;
}
AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
if (activity == null)
{
Debug.LogError("Failed to obtain Android Activity from Unity Player class.");
return null;
}
return activity;
}
4.Unity获取Android回调结果
4.1 Android定义的接口
此处Android端通过接口来实现的回调
package com.ii.Manager;
public class PluginCallback {
public interface ResultCallback {
public void OnSuccess(String result, String hint);
public void OnError(String result, int errorCode);
}
}
Android层方法:
package com.ii.Manager;
public class Method {
public void Execute(PluginCallback.ResultCallback callback){。。。}
}
4.2 Unity定义相应的类
接受回调的类:
此类要继承AndroidJavaProxy,同时根据原Android中的接口定义两个同名的方法。
public delegate void SuccessHandler(string result, string hint);
public delegate void ErrorHandler(string result, int errorCode);
class ExecuteCallback : AndroidJavaProxy
{
SuccessHandler successHandler;
ErrorHandler errorHandler;
public InstallApkCallback(SuccessHandler successCallback,
ErrorHandler errorCallback)
: base("com.ii.Manager.PluginCallback$ResultCallback")
{
successHandler = successCallback;
errorHandler = errorCallback;
}
public void OnSuccess(string result, string hint)
{
if (successHandler != null)
successHandler(result, hint);
}
public void OnError(string result, int errorCode)
{
if (errorHandler != null)
errorHandler(result, errorCode);
}
}
4.3 Unity使用方法
在new ExecuteCallback(null,null)处填入回调方法。
AndroidJavaObject jo = new AndroidJavaObject("package com.ii.Manager.Method");
jo.Call("Execute",new ExecuteCallback(null,null));
Unity调用Android的更多相关文章
- Unity调用Android类方法
Unity调用Android类方法 1. 添加Unity的classes.jar文件 创建一个Android工程AndroidUnityDemo. 由于Unity的版本不同,直接在Unity安装包文 ...
- unity 调用android函数
unity 调用android函数 分类: unity2013-12-19 17:54 475人阅读 评论(0) 收藏 举报 unityandroidjar 我们知道,安卓project都有一个And ...
- Unity调用Android相册
最近有一个项目有这个需求,让用户上传自己的交易凭证的截图,之前因为对调Android原生的东西不太熟悉,就先放了一边 因为项目已经上线,只不过是该功能未开放而已,那么现在为什么要写这篇博客呢,是因为. ...
- Andriod Unity 调用android函数
//首先这是一个前沿 //我看了多的资料,还看了近半个小时的 android activity 的讲解 终于打出了apk //接下来开始 //一步一步的跟着我走 1.创建一个android项目或者一个 ...
- Unity 调用android插件
1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...
- Unity调用Android的两个方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
- unity调用Android百度地图
由于个人是Android小白,在这个配置上面被折磨了很久,因此写下这篇文章 工具:eclipse + unity5.6.1 首先去百度地图开发者平台下载你需要的资源,我只需要显示地图和定位,这个时候你 ...
- unity调用Android的jar包
简介 有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如... 有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去 ...
- unity调用Android的两种方式:其二,调用aar包
上一篇我们讲了unity如何调用jar包 http://www.cnblogs.com/Jason-c/p/6743224.html, 现在我们介绍一下怎么生成aar包和unity怎么调用aar 一. ...
随机推荐
- C++ 函数模板用法
泛型编程概念:不考虑具体数据类型的编程方式: 函数模板: 1.提供一种特殊的函数可用不同类型进行调用: 2.与普通函数很相似,区别是类型可被参数化: template <typename T&g ...
- maven 3.6的安装
呵呵,按网上的步骤不能安装maven3.6,所以降低版本.因为3.6的没有bin文件夹. 下载地址:https://archive.apache.org/dist/maven/maven-3/3.5. ...
- 从零开始入门 K8s | 应用配置管理
一.需求来源 背景问题 首先一起来看一下需求来源.大家应该都有过这样的经验,就是用一个容器镜像来启动一个 container.要启动这个容器,其实有很多需要配套的问题待解决: 第一,比如说一些可变的配 ...
- Salesforce学习之路-developer篇(三)利用Visualforce Page实现页面的动态刷新案例学习
Visualforce是一个Web开发框架,允许开发人员构建可以在Lightning平台上本地托管的自定义用户界面.其框架包含:前端的界面设计,使用的类似于HTML的标记语言:以及后端的控制器,使用类 ...
- windows下安装和设置gradle
一.安装前检查 检查jdk是否已经安装 二.下载gradle 1. https://gradle.org/releases/ 2.设置gradle环境变量 3. 环境变量中增加名为GRADLE_HOM ...
- WordPress 使用本地化的 emoji 表情包
WordPress 结合使用 Native Emoji 和 WP Local Emoji 两个插件,可以达到使用本地化的 emoji 表情包的目的. 安装好上述两个插件并且启用: 为了使 Native ...
- SpringBoot2+Netty打造通俗简版RPC通信框架
2019-07-19:完成基本RPC通信! 2019-07-22:优化此框架,实现单一长连接! 2019-07-24:继续优化此框架:1.增加服务提供注解(带版本号),然后利用Spring框架的在启动 ...
- Cocos Creator一步一步实现重力球游戏
『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束. 『 游戏预览 』 『 开发工具 』 1. CocosCreat ...
- 网页布局——Box盒子
在移动端开发的时候,圣杯布局,弹性盒,是我们经常会用得到的,W3C很久以前就有一个display:box属性 flex是最新的,但是在实际的浏览器测试中,display: flex 不能完全替代dis ...
- 最强最全的Java后端知识体系
目录 最全的Java后端知识体系 Java基础 算法和数据结构 Spring相关 数据库相关 方法论 工具清单 文档 @(最强最全的Java后端知识体系) 最全的Java后端知识体系 最全的Java后 ...