Unity Android平台 Java代码调用


获取当前Context

AndroidJavaObject context = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");

调用静态方法

示例调用com.package包名下name类的getInstance方法获取实例

AndroidJavaObject jo = new AndroidJavaObject("com.package.name");
AndroidJavaObject instance= jo.CallStatic<AndroidJavaObject>("getInstance");

调用非静态方法

示例调用com.package包名下name类的getInstance方法获取实例,通过实例调用非静态方法

AndroidJavaObject jo = new AndroidJavaObject("com.package.name");
AndroidJavaObject instance = jo.CallStatic<AndroidJavaObject>("getInstance");
instance .Call("SetWidth", MediapipeConfig);

创建java对象并赋值

示例创建com.package包名下name类对象,并给对象内静态变量和非静态变量赋值,方法参数传递时使用较多

AndroidJavaObject jo = new AndroidJavaObject("com.package.name");
jo.set<bool>("isBool",false);
jo.set<int>("count",false);
jo..SetStatic<float>("width",1.0f);

从对象中取出嵌套参数

下边是Java中自定义的一个常见返回类型

public class ImageData
{
	public int width;
	public int height;
	public byte[] bitmapData;
}

public class ReturnData
{
	public int count;
	public ImageData imageData;
}

public static void ReturnData GetReturnData
{
	...
	return returnData;
}

比如com.package包名下name类中,通过Call方法获取的返回值是C#中不存在的类,此时我们可能无法解析,但实际使用中我们并不关心这类具体是什么结构,想要的只是类中某个变量的值,这个时候可以使用Get方法取出其中的值。

AndroidJavaObject jo = new AndroidJavaObject("com.package.name");
AndroidJavaObject instance = jo.CallStatic<AndroidJavaObject>("GetReturnData");

//获取count
int count = instance.Get<int>("count");

//将类型转换为AndroidJavaObject,在从中取出想要的参数
AndroidJavaObject imageData = instance.Get<AndroidJavaObject>("imageData");
byte[] bitmapData = imageData.Get<byte[]>("bitmapData");
int width = imageData.Get<int>("width");
int height = imageData.Get<int>("height");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值