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 一. ...
随机推荐
- Spring Boot 梳理 - 4个核心
Spring Boot 魔法的核心:自动配置.起步依赖.命令行界面.Actuator 自动配置: 不用手动配置JdbcTemplate的Bean 不用手动配置DataSource的Bean Sprin ...
- Spring MVC-从零开始-@ResponseBody(未完待续)
Spring MVC-从零开始-@ResponseBody(未完待续)
- Python奇技淫巧 - 持续更新中....
Python奇技淫巧 人生苦短,我用Python: 编程界这绝对不是一句空话,尤其是对于使用过多个语言进行工作的同学们来说,用Python的时间越长,越有一种我早干嘛去了的想法,没事,啥时候用Pyth ...
- ubuntu13 eclipse菜单栏失效解决
使用ubuntu13安装完eclipse和myeclipse后发现菜单栏单击时不显示下拉框只能通过快捷键显示. 百度了一下,找到以下解决办法. 打开终端运行下面的命令,打开eclipse后可正常显示菜 ...
- 使用Docker安装FastDFS(分布式文件系统)
1. 获取镜像 可以利用已有的FastDFS Docker镜像来运行FastDFS. 获取镜像可以通过下载 docker image pull delron/fastdfs 也可是直接使用提前下载的镜 ...
- Python攻破淘宝网各类反爬手段,采集淘宝网ZDB(女用)的销量!
声明: 由于某些原因,我这里会用手机代替,其实是一样的! 环境: windows python3.6.5 模块: time selenium re 环境与模块介绍完毕后,就可以来实行我们的操作了. 第 ...
- Postgressql高可用(pgpool+异步流复制)
文档结构: 由于博主之前是Oracle dba,oracle 高可用一般是rac,以及搭建ADG,一个是基于实例的高可用,一个是基于数据的容灾,甚至也有rac+adg的方式.Postgres有同步和异 ...
- SpringCache - 请求级别缓存的简易实现
前言 在SpringCache缓存初探中我们研究了如何利用spring cache已有的几种实现快速地满足我们对于缓存的需求.这一次我们有了新的更个性化的需求,想在一个请求的生命周期里实现缓存. 需求 ...
- Sublime Text 3 配置 Phpcs
Phpcs 插件介绍 可以为 Sublime Text 编辑器提供代码格式检测的功能,使用以下工具(全部可选): PHP_CodeSniffer (phpcs) Linter (php -l) PHP ...
- Siege 网站性能压力测试工具使用入门
Siege is an open source regression test and benchmark utility. It can stress test a single URL with ...