获取当前Context
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
调用静态方法
示例调用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");