Android 内存信息,可以通过java读取系统文件获得。可以在java中写好方法给C#调用。这里我们可以不通过在java里面写方法,直接只用unity提供调用java的封装,或许android内存信息。

public static String GetTotalMemory()

{

try

{

AndroidJavaObject fileReader = new AndroidJavaObject("java.io.FileReader", "/proc/meminfo");

AndroidJavaObject br = new AndroidJavaObject("java.io.BufferedReader", fileReader, 2048);

string mline = br.Call("readLine");

br.Call("close");

mline = mline.Substring(mline.IndexOf("MemTotal:"));

mline = Regex.Match(mline, "(\\d+)").Groups[1].Value;

return (int.Parse(mline) / 1000).ToString();

}

catch(Exception e)

{

return SystemInfo.systemMemorySize.ToString();

}

}

可以看到,就是把本来写在java的方法,用unity的封装调用一遍。这样,可以用C#完成java所有的功能,就是写起来很繁琐。这样的好处就是不用更新apk,就可以动态更新C#获得java调用的功能。

同样,我们可以通过这个方法生成一个java的uuid。

public static String GetUuid()

{

try

{

AndroidJavaClass androidActivityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

AndroidJavaObject activity = androidActivityClass.GetStatic("currentActivity");

string telSer = new AndroidJavaClass("android.content.Context").GetStatic("TELEPHONY_SERVICE");

AndroidJavaObject tm = activity.Call("getSystemService", telSer);

String tmDevice = "" + tm.Call("getDeviceId");

String tmSerial = "" + tm.Call("getSimSerialNumber");

AndroidJavaClass secure = new AndroidJavaClass("android.provider.Settings$Secure");

String aid = secure.GetStatic("ANDROID_ID");

String androidId = "" + secure.CallStatic("getString", activity.Call("getContentResolver"), aid);

long hcode = (long) tmDevice.GetHashCode() << 32;

long lcode = (long) tmSerial.GetHashCode();

long mostSigBits = (long) androidId.GetHashCode();

long leastSigBits = hcode | lcode;

AndroidJavaObject deviceUuid = new AndroidJavaObject("java.util.UUID", mostSigBits, leastSigBits);

return deviceUuid.Call("toString");

}

catch (Exception e)

{

return "-1";

}

}

这种调用有3个注意点。

父类的常量,只能通过父类调用,不能通过子类调用。比如上面的Context的TELEPHONY_SERVICE

内部类的路径需要加$,比如android.provider.Settings$Secure

java函数的参数类型要对应,比如java函数需要long,那么c#就要传long,类型不对不会自动转换会抛出异常

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐